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 = []

あなたが直面している問題は、2 行目で作成した同じリストを常に再利用していることです: list_temp = list(). この 1 つのリストへの参照を何度も挿入しているだけです。

于 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 に答える