列表是可变类型-为了创建副本(而不只是传递相同的列表),您需要明确地这样做:
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
类型构造函数 创建一个新列表,该列表的内容等于第一个列表。(在第一个示例中我没有使用它,因为您在代码中覆盖了该名称-这是为什么您不想这样做的一个很好的例子!)