3

我是一个从 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]

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

4

1 回答 1

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 ]
于 2013-09-21T06:45:42.413 回答