0

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

2 回答 2

6

不要删除列表中的项目 ( del list_temp[0:len(list_temp)]),只需分配一个新列表:list_temp = list()。您还可以使用简写:list_temp = []

您面临的问题是您总是重复使用您在第二行中创建的相同列表:list_temp = list(). 您只是一遍又一遍地插入对这个列表的引用。

于 2012-06-24T15:22:55.713 回答
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]]
于 2016-02-15T09:58:25.607 回答