> 백엔드 개발 > 파이썬 튜토리얼 > 목록 곱셈이 Python에서 공유 하위 목록을 생성하는 이유는 무엇입니까?

목록 곱셈이 Python에서 공유 하위 목록을 생성하는 이유는 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-23 12:55:10
원래의
989명이 탐색했습니다.

Why Does List Multiplication Create Shared Sublists in Python?

목록 목록의 예기치 않은 변경

목록 곱셈을 사용하여 목록 목록을 생성할 때 예기치 않은 변경에 주의하세요.

문제 설명

간단한 목록 곱셈으로 목록의 목록 만들기, 좋아요:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿