copy.copy()并copy.deepcopy()只复制像元组一样的不可变对象的引用.如何在不同的内存位置创建第一个不可变对象的副本?
Mak*_*oto 29
你在找deepcopy.
from copy import deepcopy
tup = (1, 2, 3, 4, 5)
put = deepcopy(tup)
Run Code Online (Sandbox Code Playgroud)
不可否认,这两个元组的ID将指向相同的地址.因为元组是不可变的,所以创建另一个完全相同的副本实际上没有理由.但是,请注意元组可以包含可变元素,而deepcopy/id的行为与您预期的一样:
from copy import deepcopy
tup = (1, 2, [])
put = deepcopy(tup)
tup[2].append('hello')
print tup # (1, 2, ['hello'])
print put # (1, 2, [])
Run Code Online (Sandbox Code Playgroud)
lvc*_*lvc 18
添加空元组:
>>> a = (1, 2, 3)
>>> a is a+tuple()
False
Run Code Online (Sandbox Code Playgroud)
连接元组总是返回一个新的不同元组,即使结果是相等的.
尝试这个:
tup = (1,2,3)
nt = tuple(list(tup))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34609 次 |
| 最近记录: |