我是来自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]
我无法解释为什么这段代码无法产生所需的输出,还有其他方法可以做到这一点吗?
答案 0 :(得分:3)
您只创建一个列表
list1 = list2 = list3 = list()
此行创建一个空列表,将其引用分配给list3
,将引用分配给list3
至list2
和list1
,结果这些是指同一个对象。因此,当您添加值时,您可以将它们添加到所有“列表”中。
这样可以正常使用
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 ]