Python列表选择性插入列表

Python列表选择性插入列表,python,list,multiple-insert,Python,List,Multiple Insert,我有两张同样大小的单子 我有28个集合,我需要计算每个集合有多少个元素,这些集合也可能是空的,因为它们是聚类分析的结果。我想创建一个名为cluster_entries的列表,比如cluster_entries=[[0]*28],然后将在adidx_n[I]中找到的相应值附加到相应的cluster_条目[idx_n[I]] 例如,如果我的idx_n[20]=10,我想将值20添加到集群条目的列表20中。因此,我编写了以下代码: for i in range(len(idx_n)): pri

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

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

for i in range(len(idx_n)):
    print i, idx_n[i]
    cluster_entries[int(idx_n[i])].append(list_from_files[i])
不幸的是,此代码总是附加到第一个元素。。。我不明白为什么你的名单

cluster_entries = [[0]*28]
是对同一列表的28个相同引用的列表。您需要使用

cluster_entries = [ [0] for i in range(28) ]
有28个独特的列表

另外,在
idx\u n
上进行迭代的一种更具python风格的方法是

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

仍然不起作用,我尝试过使用cluster_entries=[[0]*28…]但是它仍然会将所有内容附加到列表中的同一个条目,或者将相同的值附加到列表中的所有条目……请再次阅读我的答案。您不能使用
[[0]*28]
。您需要使用列表理解。抱歉,我用错误的方式表达了自己,我尝试了您为范围(28)中的I编写的cluster_entries=[[0]抱歉,错误您如何设置
idx\u n
的值?它是从一个numpy数组
idx生成的列表,{=vq.vq(数据,质心)