列表是可变类型-为了创建副本(而不只是传递相同的列表),您需要明确地这样做:
listoflists.append((list[:], list[0]))
但是,
list已经是Python内置的名称-最好不要将该名称用作变量。这是一个不用
list作变量名并复制的版本:
listoflists = []a_list = []for i in range(0,10): a_list.append(i) if len(a_list)>3: a_list.remove(a_list[0]) listoflists.append((list(a_list), a_list[0]))print listoflists
请注意,我演示了两种不同的方法来复制上面的列表:
[:]和
list()。
首先
[:]是创建一个 切片 (通常通常用于获取列表的一部分),该 切片 恰好包含整个列表,因此实际上是列表的副本。
第二个
list()使用实际的
list类型构造函数
创建一个新列表,该列表的内容等于第一个列表。(在第一个示例中我没有使用它,因为您在代码中覆盖了该名称-这是为什么您不想这样做的一个很好的例子!)



