python - 如何在 Python 中复制包含嵌套元组的元组?

标签 python tuples

我正在研究一个问题,它要求我定义一个函数 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/

相关文章:

python - Tensorflow 签名输出占位符

python - 如何在 Python 的类字典结构中对耦合值求和?

typescript :从界面创建元组

c++ - 如何展平异构列表(又名......元组的元组)

python - 将数据框的一部分除以另一部分,同时保留未划分的列

python - 在python中获取日期时间的标准偏差

python - 如何将剪贴板中的文本粘贴到文本字段中

Python - 如何以各种可能的方式生成将 12 个项目的列表拆分为 3 个任意大小的列表(包括空列表)

c++ - 使用扩展元组参数调用成员函数 std::invoke 与 std::apply

python - 从元组优化迭代