반응형
이전 포스팅에서 리스트에 대해서 문제가 발생했었다.
문제가 되는 리스트 선언 부분을 확인해보자.
선언 방식을 보면 행과 열 사이에 *로 표시되었다.
해당 방식을 사용하면 객체의 복사가 아니라 레퍼런스의 복사가 일어나서 하나의 값을 수정하면 다른 행의 값도 바뀌게 된다.
무슨말인지 모르겟다면 다음의 예시를 보면 될 것 같다.!
TEST = [ [0] * 4] * 3
print(TEST)
결과: [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
여기서 TEST[0][0]에 임의의수를 대입하면 어떻게 될까?
TEST[0][0] =
print(TEST)
결과: [[3, 0, 0, 0], [3, 0, 0, 0], [3, 0, 0, 0]]
보다싶이 값이 동일한 부분에 다 들어가는 문제가 생긴다. (의도치 않는 문제 발생)
라서 선언을 위처럼 하면 안되고 다음과 같이 해야된다.
방법1: TEST = [ [0] *4 for x in range(3)]
방법2: TEST = []
for x in range(3):
TEST.append( [0] * 4 )
방법3: TEST = [[0 for col in range(3)] for row in range(4)]
이런 부분 때문에 시간 낭비한게 너무 분하다....
반응형
'컴퓨터 프로그래밍' 카테고리의 다른 글
Python Pandas를 이용한 데이터 처리 - DataFrame (1) | 2019.06.24 |
---|---|
Python Pandas를 이용한 데이터 처리 - Series (0) | 2019.06.24 |
리스트와 numpy 문제? (0) | 2019.06.21 |
python 리스트 슬라이싱 (0) | 2019.06.21 |
python 리스트 컴프리헨션(Comprehension) (0) | 2019.06.20 |