列表创建列表

时间:2012-06-24 15:19:32

标签: python

在我的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)

2 个答案:

答案 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]]