Python:通过迭代列表列表将项目附加到列表

时间:2013-09-21 06:42:04

标签: python

我是来自C的Python新手。我基本上尝试的工具逻辑相当于C中的数组指针数组。

我想通过迭代这些列表的列表将一个项目附加到一堆列表的末尾。我有以下代码:

data = [10, 20, 30]
list1 = list2 = list3 = list()
lists = [list1, list2, list3]

for i in range(len(data)):
    lists[i].append(data[i])

for lst in lists:
    print lst

然而,结果是:

[10, 20, 30]
[10, 20, 30]
[10, 20, 30]

而不是:

[10]
[20]
[30]

我无法解释为什么这段代码无法产生所需的输出,还有其他方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:3)

您只创建一个列表

list1 = list2 = list3 = list()

此行创建一个空列表,将其引用分配给list3,将引用分配给list3list2list1,结果这些是指同一个对象。因此,当您添加值时,您可以将它们添加到所有“列表”中。

这样可以正常使用

data = [10, 20, 30]
lists = [[], [], []]

for i in range(len(data)):
    lists[i].append(data[i])

for lst in lists:
    print lst

但最简单的方法就是

data = [10, 20, 30]
lists = [ [x] for x in data ]