0

我有两个大小相同的列表我有 28 个集合,我需要计算每个集合有多少元素,这些集合也可能是空的,因为它们是聚类分析的结果。我在想有一个名为 cluster_entries 的列表列表,例如 cluster_entries = [[0]*28],然后将找到的相应值附加到相应的 cluster_entries[idx_n[i]]

因此,例如,如果我有 idx_n[20] = 10,我想将值 20 添加到 cluster_entries 的列表 20 中。因此我编写了以下代码:

for i in range(len(idx_n)):
    print i, idx_n[i]
    cluster_entries[int(idx_n[i])].append(list_from_files[i])

不幸的是,这段代码总是附加到第一个元素......我不明白为什么

4

1 回答 1

0

你的清单

cluster_entries = [[0]*28]

是对同一列表的 28 个相同引用的列表。您需要改用

cluster_entries = [ [0] for i in range(28) ]

拥有 28 个唯一列表。

此外,一种更 Pythonic 的迭代方式idx_n

for i, idx in enumerate(idx_n):
    print i, idx
    cluster_entries[ int(idx) ].append( list_from_files[i] )
于 2013-07-12T14:51:41.903 回答