在我的python代码中我想在循环中创建一个列表列表... 但是在完成循环后,我最终得到了所有元素中的相同列表......是因为列表是指向的而不是存储的?如果是这样,我怎样才能找到解决问题的方法呢? 以下是我的代码
list_lists=list()
list_temp=list()
for i in xrange(n):
ind_count =0
del list_temp[0:len(list_temp)]
for j in xrange(no_words):
if inp[i] == words[j]:
list_temp.append(j)
list_lists.append(list_temp)
答案 0 :(得分:6)
不要删除列表中的项目(del list_temp[0:len(list_temp)]
),而只需指定一个新列表:list_temp = list()
。您也可以使用简写:list_temp = []
您面临的问题是您始终重复使用在第二行中创建的相同列表:list_temp = list()
。您只是一遍又一遍地插入对这一个列表的引用。
答案 1 :(得分:0)
似乎这和你做的一样:
n = 10
b = []
for x in range(n):
... b.append([])
b
[[], [], [], [], [], [], [], [], [], []]
(所以b是n个列表的列表)
以下似乎是/做同样的事情:
a = [[]]*n
a
[[], [], [], [], [], [], [], [], [], []]
(a也是n个列表的列表)
a == b
True
b[0].append(4)
b
[[4], [], [], [], [], [], [], [], [], []]
(有道理)
然而:
a[0].append(4)
a
[[4], [4], [4], [4], [4], [4], [4], [4], [4], [4]]