-
TIL.7 2차원 리스트_2TIL 2020. 10. 15. 21:17728x90
## 반복문으로 리스트 만들기
a = [] # 빈 리스트 생성
for i in range(10):
a.append(0) # append로 요소 추가
::
[0, 1, 2...9]
# for 반복문으로 1차원 리스트 만들기
a = [] # 빈 리스트 생성
for i in range(3):
line = [] # 안쪽 리스트로 사용할 빈 리스트 생성
for j in range(2):
line.append(0) # 안쪽 리스트에 0 추가
a.append(line) # 전체 리스트에 안쪽 리스트를 추가
print(a)
:: [[0, 0], [0, 0], [0, 0]]
## for 반복문으로 2차원 리스트 만들기
a = [[0*j for j in range(2)] for i in range(3)]
print(a)
# [[0, 0], [0, 0], [0, 0]]
b = [[0] * 2 for i in range(3)]
print(b)
# [[0, 0], [0, 0], [0, 0]]
## 리스트 표현식으로 2차원 리스트 만들기
a = [3, 1, 3, 2, 5] # 가로 크기를 저장한 리스트
b = [] # 빈 리스트 생성
for i in a: # 가로 크기를 저장한 리스트로 반복
line = [] # 안쪽 리스트로 사용할 빈 리스트 생성
for j in range(i): # 리스트 a에 저장된 가로 크기만큼 반복
line.append(0)
b.append(line) # 리스트 b에 안쪽 리스트를 추가
print(b)
# [[0, 0, 0], [0], [0, 0, 0], [0, 0], [0, 0, 0, 0, 0]]
## for 문을 이용해 빈 리스트에 톱니형 리스트 만들기
c = [[0] * i for i in [3, 1, 3, 2, 5]]
print(c)
#[[0, 0, 0], [0], [0, 0, 0], [0, 0], [0, 0, 0, 0, 0]]
## 리스트 표현식을 이용한 톱니형 리스트 만들기
## 2차원 리스트의 할당 과 복사
a = [[10, 20], [30, 40]]
b = a
b[0][0] = 500
print(a)
:: [[500, 20], [30, 40]]
print(b)
:: [[500, 20], [30, 40]]
a = [[10, 20], [30, 40]]
b = a.copy()
b[0][0] = 500
print(a)
:: [[500, 20], [30, 40]]
print(b)
:: [[500, 20], [30, 40]]
a = [[10, 20], [30, 40]]
import copy # copy 모듈을 가져옴
b = copy.deepcopy(a) # copy.deepcopy 함수를 사용하여 깊은 복사
b[0][0] = 500
print(a)
:: [[10, 20], [30, 40]]
print(b)
:: [[500, 20], [30, 40]]
## 1번 코드는 할당 // 2번 코드는 복사 이다.
## 3번 deepcopy 함수를 통한 복사 이다.
## 이전 copy 메서드를 이용해 변수 2개, 리스트 2개를 생성할 수 있었으나
## 2차원 이상의 다차원의 리스트는 copy 메서드를 이용해도 2개의 리스트를 생성할 수 없다
## 따라서 1차원 리스트의 copy 함수의 역할을 수행하게 하기 위해선 copy 모듈의 deepcopy 함수를 사용해야한다(tuple도 동일)
728x90'TIL' 카테고리의 다른 글
TIL.9 쿠키_ 세션_ 캐시_ 그리고 토큰_1 (0) 2020.10.17 TIL.8 웹 크롤링(Python)_네이버 실시간 검색어 가져오기 (0) 2020.10.16 TIL.6 2차원 list(행, 열, 표) (0) 2020.10.14 TIL. 5 list 함수 응용편_3 (0) 2020.10.13 TIL.4+0.5 list 함수 응용편_2 (0) 2020.10.12