은 내가 append()
기능에 대한 이상한 행동이 생각 나는 발생했습니다, 나는 다음과 같은 간단한 코드를 복제하는 데 성공했습니다파이썬 추가 동작이 이상합니까?
plugh1 = []
plugh2 = []
n = 0
while n <= 4:
plugh1.append(n)
plugh2.append(plugh1)
n = n+1
print plugh1
print plugh2
plugh1 = [1, 2, 3, 4]
plugh2 = [[1], [1, 2], [1, 2, 3, ], [1, 2, 3, 4]]
하지만 실제 결과는 다음 루프 실행되는
plugh1 = [1, 2, 3, 4]
plugh2 = [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
모든 배열 요소로 대체 될 때마다 plugh1의 값.
비슷한 질문이 있지만 해결책은 중첩 함수와 관련이 있으며 이러한 호출 외부에서 변수를 정의하는 것과 관련이있는 것 같습니다. 이것은 훨씬 간단합니다. 내가 뭘 놓치고 있니?
'plugh2.append (plugh1 [:])' – sberry
도 우수 할 수 있습니다. newb를 도와 주셔서 감사합니다. 건배 –