파이썬의 튜플은 변경할 수 없으므로 일반적으로 복사본을 만들 필요가 없습니다. 아마도 그 이유가 될 수 있습니다.
>>> l = [1,2,3]
>>> list(l) is l # new list ...
False
>>> t = (1,2,3)
>>> tuple(t) is t # but same tuple
True
당신을 수 list
첫째로 튜플을 변환하지만, 다음 해당 목록에서 새 tuple
을 만듭니다 list
는 tuple
는 주어진 매개 변수가 이미 튜플 아닌 경우는 자동으로 새 튜플을 생성합니다 .
>>> tuple(list(t)) == t # equal ...
True
>>> tuple(list(t)) is t # ... but not the same
False
>>> id(tuple(list(t))), id(t) # different id
(139852830618896, 139852830618752)
몇 줄이 더 있지만 기본적으로 현재 수행중인 작업이므로 코드가 올바르게 작동해야합니다.
단,이 복사하지 않는 튜플의 얕은 복사, 튜플 내에서, 즉 객체 (어떤 다른 튜플,리스트를) 만들 것입니다. 이들을 복사해야하는 경우 다른 대답과 마찬가지로 copy.deepcopy
을 사용하십시오. 그러나이 역시, 그것은 사본 (중첩 된) 경우에만 튜플을 생성하지 않도록 "스마트"입니다 불변 값이 포함되어
>>> k = (1, (2, "3")) # all immutable
>>> copy.deepcopy(k) is k
True
>>> k = (1, (2, "3", [])) # contains mutable list
>>> copy.deepcopy(k) is k
False
하여 들여 쓰기를 수정하십시오 T2 = T1처럼 슬라이스하여 다른 또 다른 튜플에서 번호를 삽입 할 수 ... – DavidG
당신의 코드가 잘 작동합니다 . "ID"가 무엇을 의미하는지 알고 있습니까? 또한 튜플은 변경할 수 없으므로 일반적으로 사본을 만드는 것이 어쨌든별로 의미가 없습니다. –
[최소의 완전하고 검증 가능한 예제를 만드는 방법] (https://stackoverflow.com/help/mcve)을 참조하십시오. –