我正在研究一个问题,它要求我定义一个函数 copy_tree
,它接受一个参数 tree
(可能包含元组的元组)并返回树(即存储在不同的内存位置)。
我当前的代码是:
def copy_tree(tree):
new_tree = ()
for i in tree:
new_i = (i,) + ()
new_tree = new_tree + new_i
return new_tree
但是,这不适用于嵌套元组,因为内部的元组不是“复制”而是引用。
例如如果我跑
a = ((3, 2), 1, (4,), 5)
b = copy_tree(a)
print(a[0] is b[0])
输出必须是False
。
如何制作元组副本?
编辑:我不允许使用deepcopy
模块。
最佳答案
这是一个递归解决方案,深度复制(嵌套)元组,保持其他对象不变,并且不使用 copy
模块:
def copy_tree(tree):
if isinstance(tree, tuple):
return tuple(map(copy_tree, tree))
# or, maybe more readable
# return tuple(copy_tree(x) for x in tree)
return tree
如果您事先不知道嵌套级别,递归绝对是最优雅的方法。
关于python - 如何在 Python 中复制包含嵌套元组的元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52381779/