"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 스타 연산자를 사용하여 목록 목록을 초기화하는 이유는 무엇입니까?

스타 연산자를 사용하여 목록 목록을 초기화하는 이유는 무엇입니까?

2025-02-12에 게시되었습니다
검색:608

Why Does Using the Star Operator to Initialize a List of Lists Cause Linkage?] * n 목록이 함께 연결된 것으로 보이는 예기치 않은 동작이 발생할 수 있습니다.

이 문제는 [[]] * n에 사용 된 스타 ( *) 연산자가 참조 목록을 작성하기 때문에 발생합니다. 동일한 기본 목록 개체에. 순서대로 목록 중 하나를 수정하면 변경 사항은 모두 동일한 객체를 참조하기 때문에 다른 모든 목록에 반영됩니다.

솔루션

별도의 목록 목록을 만듭니다. , 각 목록을 별도로 초기화하는 것이 중요합니다. 이것은 다음 구문을 사용하여 달성 할 수 있습니다 :

x = [] 범위 (n)

x = [[] for i in range(n)]

루프의 반복, 독립 목록 개체 목록을 초래합니다.

비교

차이를 설명하려면 다음 코드 스 니펫을 고려하십시오.

x = [[]] * 3
x[1].append(0)
print(x)  # Output: [[0], [0], [0]]

이 예에서는 목록 X에 동일한 목록 개체에 대한 세 가지 참조가 포함되어 있으므로 한 목록에 대한 수정 사항은 영향을 미칩니다. 다른 한편으로, 다음 코드 스 니펫은 세 가지 별개의 목록을 만듭니다. x [1]. 부회 (0) print (x) # output : [[], [0], []]

여기서 x의 각 목록은 별도의 객체이므로 한 목록으로의 변경 사항은 다른 목록에 영향을 미치지 않습니다.
            
릴리스 선언문 이 기사는 1729212679에 재현됩니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3