Python에서 [[1] 4]와 같이 목록 곱셈을 사용하여 목록 목록 생성 3, 하나의 하위 목록에 대한 변경 사항이 모든 하위 목록에 영향을 미치는 상황이 발생합니다. 이 동작은 직관에 어긋나며 예상치 못한 결과를 초래할 수 있습니다.
목록 곱셈을 사용할 때 새 목록은 원래 목록에 대한 참조입니다. 새 목록의 요소를 수정하면 실제로 모든 하위 목록에서 참조하는 원래 목록의 요소가 수정됩니다.
이 예기치 않은 동작은 Python이 목록 이해 전에 곱셈 연산자 를 평가하기 때문에 발생합니다. . 이 경우 [[1] 4]는 단일 하위 목록으로 평가되고 *는 해당 하위 목록에 대한 세 개의 참조를 생성합니다.
이 동작을 방지하고 세 개의 독립적인 참조를 생성하려면 하위 목록의 경우 다음과 같이 목록 이해를 사용할 수 있습니다.
[[1] * 4 for _ in range(3)]
목록 이해는 재평가합니다. 각 하위 목록에 대한 [1] * 4 표현식으로 인해 연결되지 않은 세 개의 개별 하위 목록이 생성됩니다.
목록 곱셈은 반복되는 요소가 있는 목록을 만드는 편리한 방법입니다. , 한계를 이해하는 것이 중요합니다. 목록 곱셈은 표현식을 보지 않고 기존 객체에 대해 작동합니다. 객체의 복사본을 만들지 않고 대신 기존 객체에 대한 참조를 생성합니다.
반대로 리스트 컴프리헨션은 각 요소에 대한 표현식을 재평가하여 필요에 따라 새 객체를 생성합니다. 이 동작은 목록의 각 요소가 독립적임을 보장합니다.
위 내용은 Python에서 목록 곱셈을 사용할 때 하나의 하위 목록을 수정하면 모든 하위 목록에 영향을 미치는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!