num = [1,2,3,4]
num == list(num)
이 같은 진정한, 왜 '목록 (목록) 목록'은 파이썬에서 거짓입니까?
num is list(num)
는
거짓을 제공을 제공합니다.
이 두 가지의 차이점은 무엇입니까? 두 문장에서 파이썬은 무엇을 하는가?
num = [1,2,3,4]
num == list(num)
이 같은 진정한, 왜 '목록 (목록) 목록'은 파이썬에서 거짓입니까?
num is list(num)
는
거짓을 제공을 제공합니다.
이 두 가지의 차이점은 무엇입니까? 두 문장에서 파이썬은 무엇을 하는가?
==
은 내용을 비교하는 두 목록에 대해 list.__eq__
을 호출합니다. is
은 객체 참조를 비교합니다. is
을 반환하면 True
은 두 이름이 모두 메모리의 동일한 개체를 가리키는 것을 의미합니다.
결과가 list
인 경우 항상은 입력이 다른 목록 인 경우에도 얕은 복사본을 만듭니다. 그 이유는 list
이 변경 가능한 유형이기 때문입니다. 당신은 다른 것을 수정하지 않고 하나의리스트를 수정할 수 있기를 원한다. 그렇지 않으면 왜 생성자를 호출하는 것을 왜 귀찮게 하는가?
동일한 동작은 변경할 수없는 tuple
에서 발생하지 않습니다. tuple(some_tuple) is some_tuple
은 True
입니다.
감사합니다. 너는 그것을 잘 설명했다. – karthiq
list()
은 새 목록을 만듭니다. 새롭게 생성 된 목록은 원본과 동일하지만 (==
) 동일하지는 않습니다 (is
).
@Ashwani. 꽤 속아. Tuple은이 동작을 나타내지 않지만 string과 list는 동작합니다. 여기에는 특정 유형이 중요합니다. –