이 글은 주로 Python에서 사전을 목록에 추가한 후의 값 변경에 대해 간략하게 소개합니다. 이제 특정 참조 값이 있으므로 이를 참조할 수 있습니다.
예제를 살펴보세요
d={'test':1} d_test=d d_test['test']=2 print d
명령줄에서 연습해 보면 d_test인데 d도 그에 따라 변경된 것을 알 수 있습니다.
보통 우리가 기대하는 것과는 다릅니다.
왜?
사전 d는 객체이고 d_test=d는 실제로 메모리에 사전을 다시 생성하지 않기 때문입니다. 그것은 단지 같은 객체를 가리킬 뿐입니다. 이는 Python이 성능을 향상하고 메모리를 최적화하기 위한 고려사항이기도 합니다.
실제 시나리오
d={"name":""} l=[] for i in xrange(5): d["name"]=i l.append(d) print l
루프는 원하는 결과와 같지 않을 수도 있습니다.
목록에 추가되더라도 목록에 저장되는 것은 여전히 객체이거나 사전의 주소입니다. 메모리의 실제 저장 공간이 아닌
.copy() 메소드를 사용하세요. 새로운 독립사전을 생성할 수 있습니다
d={"name":""} l=[] for i in xrange(5): test=d.copy() test["name"]=i l.append(test) print l
업데이트:
a={'q':1,'w':[]} b=a.copy() b['q']=2 b['w'].append(123) print a print b
이때 a에서 'q'의 값은 변하지 않는 것으로 확인되었으나, 목록에서 여전히 변경이 발생합니다
복사본은 얕은 사본이므로
하지만 트랙이 있습니다
a={'q':1,'w':[]} b=a.copy() b['q']=2 b['w']=[123] print a print b
직접 할당하면 a의 구조가 변경되지 않습니다(주로 추가 방법으로 인해).
심층 수준 복사
import copy a={'q':1,'w':[]} b=copy.deepcopy(a)
관련 권장 사항:
Python은 빈 목록을 생성하고 추가 사용 방법을 설명합니다
위 내용은 Python에서 사전을 목록에 추가한 후 값 변경에 대한 간략한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!