728x90
파이썬에서 리스트를 다루다 보면 리스트의 크기나 값을 초기화시켜야 하는 경우가 생긴다.
다음은 파이썬에서 리스트를 초기화시키는 3가지 방법이다.
✅ 첫번 째 방법
#a = []
a = list()
for i in range(10):
a.append(i)
print(a)
# 결과값
[0, 1, 2, 3, 4 ,5, 6 ,7, 8, 9]
리스트를 생성하는 방법은 a = [ ] 나 a = list() 나 같고 반복문으로 값은 넣는다.
다음은 2차원 배열을 초기화 하는 코드이다.
a = list()
for i in range(10):
tmp = []
for j in range(5):
tmp.append(j)
a.append(tmp)
print(a)
#결과값
[[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]]
위 방식은 파이썬에서는 잘 쓰지 않는 방식이다.
✅ 두번 째 방법
b = [0] * 3
print(b)
#결과값
[0, 0, 0]
다음은 2차원 배열을 초기화하는 코드이다.
b = [[0]*3]*3
print(b)
#결과값
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]
초기화 코드는 한 줄로 끝낼 수 있다. 하지만 한 가지 문제가 존재한다.
만약 b[1][1] 값만 변화시키려면 어떻게 해야 할까
b = [[0]*3]*3
b[1][1] = 1
print(b)
#결과값
[[0, 1, 0],
[0, 1, 0],
[0, 1, 0]]
1열의 값이 모두 변화한 것을 확인할 수 있다. 왜 그럴까
이 방식은 리스트를 초기화시킬 때 모든 행이 같은 객체로 인식된다.
✅ 세번 째 방법
c = [0 for _ in range(3)]
print(c)
#결과값
[0, 0, 0]
다음은 2차원 배열을 초기화하는 코드이다.
c = [[0]*3 for _ in range(3)]
c[1][1] = 1
print(c)
[[0, 0, 0],
[0, 1, 0],
[0, 0, 0]]
두번 째 방법을 해결하면서 원하는 값이 잘 나온다.
참조 : [파이썬] 리스트 초기화 (feat.2차원) :: Juun42 (tistory.com)