이 코드를 실행 시키면 :이해 파이썬 변수 할당
a = [1,2,3]
b = a
b.remove(2)
print(a,b)
내가 볼 것으로 예상하는 것은 :
[1,2,3] [1,3]
하지만이입니다 난 정말 무엇을 얻을 :
[1,3] [1,3]
왜 전화 b.remove(2)
도 a
에 영향을 줍니까? 원본 콘텐츠의 사본을 a
으로 유지하면서 b
을 변경하려면 어떻게해야합니까?
이 코드를 실행 시키면 :이해 파이썬 변수 할당
a = [1,2,3]
b = a
b.remove(2)
print(a,b)
내가 볼 것으로 예상하는 것은 :
[1,2,3] [1,3]
하지만이입니다 난 정말 무엇을 얻을 :
[1,3] [1,3]
왜 전화 b.remove(2)
도 a
에 영향을 줍니까? 원본 콘텐츠의 사본을 a
으로 유지하면서 b
을 변경하려면 어떻게해야합니까?
b = a
을 수행하면 동일한 목록에 대한 다른 참조를 만들기 만하면됩니다. 따라서 해당 목록을 수정하면 a
및 b
모두에 영향을 미칩니다. 따라서 b.remove(2)
을하면 소유하고있는 단일 목록에 영향을 미칩니다.
b = a[:]
이 방법, 당신은 목록의 복사본을 생성, 당신은 다른 변경하지 않고 하나를 수정할 수 있습니다 : 당신이 당신의 예상 결과를 얻고 싶은 경우에
, 당신은 목록의 복사본을 만들 수 있습니다.
>>> a = [1,2,3]
>>> b = a[:]
>>> b.remove(2)
>>> print a,b
[1, 2, 3] [1, 3]
a
및 b
같은 목록이 이름입니다, 그래서 당신은 하나 명의 이름을 통해 목록을 변경하는 경우, 당신은 다른 이름을 통해 변경 사항을 볼 수 있습니다.
b = a[:]
또는
이b = list(a)
당신이 읽고 싶은 수 있습니다 : 를 http://nedbatchelder.com/text/names.html 당신이 그들을 다른 목록 싶은 경우, 복사본을 만들 – Yann