본문 바로가기
TIL

[Python] List 연산 주의점

by _KHK 2022. 5. 4.

알고리즘 문제 풀이 중 거의 18시간 동안 답이 안 나온 문제가 있었다.

아무리 생각해도 오류가 없는데 왜 답이 안되는지 코드 한 줄 한 줄 뜯어보면서 결국엔 알아냈다.

 

원인은 파이썬 리스트 연산 때문이었다.

 


아래 두 개의 코드는 결과 출력 값을 보면 똑같다.

하지만 다음 코드를 적용하면 어떤 결과가 나올까?

result[2][1] = "A"
result_lcph[2][1] = "A"

 

결과 출력

 

내가 처음 예상한 결과 값은 result와 result_lcph 둘 모두 오른쪽 결과처럼 나왔어야 했다.

하지만 보다시피 전혀 다른 결과를 낸다. 

 


이러한 원인을 공부하고 블로그에 게시하기 위해 파이썬 docs를 찾아본 결과 정확하게 "이것은 종종 새 파이썬 프로그래머들을 괴롭힙니다"라는 문구가 있다. 

리스트에 리스트를 연산 방식으로 다차원 리스트를 만드는 경우 모두 같은 리스트를 참조하게 된다고 적혀있다.

그래서 리스트 안의 리스트를 추가시키려는 경우는 리스트 컴프리핸션이나 for문을 이용해야 할 것이다.

 

 

무려 18시간 이상을 헤매었지만 그래 이렇게 또 알아가는거다.. .. .

 

 

 

 

 

댓글