목록 곱셈을 사용하여 목록 목록을 생성할 때 예기치 않은 변경에 주의하세요.
간단한 목록 곱셈으로 목록의 목록 만들기, 좋아요:
xs = [[1] * 4] * 3
무모한 결과를 초래할 수 있습니다. 하나의 하위 목록 내의 값을 변경하면 모든 하위 목록에 영향을 줍니다.
xs[0][0] = 5 print(xs) # [[5, 1, 1, 1], [5, 1, 1, 1], [5, 1, 1, 1]]
곱하기 연산자 는 표현식이 아닌 객체에 대해 작동합니다. 따라서 [[1] * 4] * 3에서는 평가된 하위 목록 [1, 1, 1, 1]만 세 번만 볼 수 있습니다. 새 하위 목록을 생성하는 대신 은 기존 하위 목록에 대한 참조를 생성합니다.
이러한 동작을 방지하고 독립적인 하위 목록을 보장하려면 목록 이해를 사용하세요.
xs = [[1] * 4 for _ in range(3)]
이 표현식은 각 반복에 대해 [1] * 4를 재평가하여 고유한 결과를 얻습니다. 하위 목록.
Python의 정수는 불변이라는 점에 유의하는 것이 중요합니다. 이는 정수에는 수정 가능한 값 속성이 없으므로
1.value = 2
과 같은 작업이 유효하지 않음을 의미합니다. 따라서 [1] * 4는 정수 자체를 복사하지 않더라도 정수를 수정할 수 없기 때문에 문제가 되지 않습니다.
위 내용은 목록 곱셈이 Python에서 공유 하위 목록을 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!