TIL
[Python] List 연산 주의점
_KHK
2022. 5. 4. 21:57
알고리즘 문제 풀이 중 거의 18시간 동안 답이 안 나온 문제가 있었다.
아무리 생각해도 오류가 없는데 왜 답이 안되는지 코드 한 줄 한 줄 뜯어보면서 결국엔 알아냈다.
원인은 파이썬 리스트 연산 때문이었다.
아래 두 개의 코드는 결과 출력 값을 보면 똑같다.
하지만 다음 코드를 적용하면 어떤 결과가 나올까?
result[2][1] = "A"
result_lcph[2][1] = "A"
결과 출력
내가 처음 예상한 결과 값은 result와 result_lcph 둘 모두 오른쪽 결과처럼 나왔어야 했다.
하지만 보다시피 전혀 다른 결과를 낸다.
이러한 원인을 공부하고 블로그에 게시하기 위해 파이썬 docs를 찾아본 결과 정확하게 "이것은 종종 새 파이썬 프로그래머들을 괴롭힙니다"라는 문구가 있다.
리스트에 리스트를 연산 방식으로 다차원 리스트를 만드는 경우 모두 같은 리스트를 참조하게 된다고 적혀있다.
그래서 리스트 안의 리스트를 추가시키려는 경우는 리스트 컴프리핸션이나 for문을 이용해야 할 것이다.
무려 18시간 이상을 헤매었지만 그래 이렇게 또 알아가는거다.. .. .
