克隆(或复制)Python 列表有几种方法:

  1. 使用切片操作符[:]
list1 = [1, 2, 3, 4, 5]
list2 = list1[:]

这会创建 list1 的一个完整副本并将其分配给 list2。

  1. 使用 list() 函数
list1 = [1, 2, 3, 4, 5]
list2 = list(list1)

这将使用 list() 函数将 list1 转换为列表并将其分配给 list2。

  1. 使用 copy() 方法
list1 = [1, 2, 3, 4, 5]
list2 = list1.copy()

这将使用 copy() 方法创建 list1 的一个副本并将其分配给 list2。

无论使用哪种方法,都将创建原始列表的一个副本,并且在对副本进行任何更改时,原始列表都不受影响。


如果列表中包含字典,则需要使用递归来克隆它们。递归是一种函数调用自身的技术,可以用于解决复杂的编程问题。

以下是一个示例代码,可以克隆列表中包含的字典:

def clone_list(lst):
    """克隆包含字典的列表"""
    cloned_list = []
    for item in lst:
        if isinstance(item, dict):
            cloned_list.append(clone_dict(item))
        elif isinstance(item, list):
            cloned_list.append(clone_list(item))
        else:
            cloned_list.append(item)
    return cloned_list

def clone_dict(dct):
    """克隆字典"""
    cloned_dict = {}
    for key, value in dct.items():
        if isinstance(value, dict):
            cloned_dict[key] = clone_dict(value)
        elif isinstance(value, list):
            cloned_dict[key] = clone_list(value)
        else:
            cloned_dict[key] = value
    return cloned_dict

该代码定义了两个函数:一个名为 clone_list(),用于克隆包含字典的列表;另一个名为 clone_dict(),用于克隆字典。在这两个函数中,使用 isinstance() 函数检查元素是否为字典或列表,并在适当的情况下进行递归克隆。

你可以使用 clone_list() 函数来克隆包含字典的列表,如下所示:

original_list = [{'a': 1, 'b': 2}, [3, 4, {'c': 5}], 'hello']
cloned_list = clone_list(original_list)
print(original_list)
print(cloned_list)

这将输出以下内容:

[{'a': 1, 'b': 2}, [3, 4, {'c': 5}], 'hello']
[{'a': 1, 'b': 2}, [3, 4, {'c': 5}], 'hello']

你会发现,克隆后的列表与原始列表相同,但是它们是两个不同的对象,可以独立修改。

箴言:因为这些东西是非常简单的。不要抱怨自己学不会,那是因为你没有足够用心。