728x90
모델 코딩을 하다가 뭔가가 잘 안되서 봤더니 파이썬의 요상한 성질 때문인 것 같다.
다른 사람은 이 문제를 보고 잘 피해서 코딩하시길..
아래는 문제사항을 간단하기 정리해 본 것이다.
아래와 같은 코드에서 결과는 무엇일까?
# Case 1
S= [[1,2,3],[2,3,4],[5,5,5]]
for x in S:
x = [1,2,3]
print(S)
의도한 바는 [[1,2,3], [1,2,3], [1,2,3]] 이다.
하지만 결과는 원래 정의한 대로 [[1, 2, 3], [2, 3, 4], [5, 5, 5]] 가 나왔다.
하지만 내가 이렇게 짠 이유는 아래와 같은 상황에선 x가 복사가 아니라 그 위치에 가는 것처럼 행동했기 때문이다.
# Case 2
S= [[1,2,3],[2,3,4],[5,5,5]]
for x in S:
x[0] = 3
print(S)
위와 같은 상황에선 [[3, 2, 3], [3, 3, 4], [3, 5, 5]] 이렇게 3으로 변경되어 나온다.
휴 왜 그런지는 정확히는 모르겠지만, 어째든 이를 해결하기 위해서 Case 1코드를 아래와 같이 변경했다.
그러니까 의도한 대로 잘 나온다.
# Case 1 - edit
S= [[1,2,3],[2,3,4],[5,5,5]]
for i in range(len(S)):
S[i] = [1,2,3]
print(S)
728x90
'알고리즘 및 코딩 > [코딩] 기타(리눅스, 주의사항)🌐' 카테고리의 다른 글
[리눅스] 계정삭제- 디렉토리 모두 삭제 / 계정만 삭제 (0) | 2023.08.10 |
---|---|
[깃허브] 홈페이지 만들기 feat.jekyll -al folio (작성중) (0) | 2023.06.20 |
[vscode] 유용한 extension: def, 명령어 쉽게 가기 (0) | 2023.05.09 |
[리눅스] chmod 하위 폴더 권한 변경 (0) | 2023.04.27 |