0

両方とも同じサイズの 2 つのリストがあり、28 個のセットがあり、セットごとにいくつの要素があるかを数える必要があります。これらのセットはクラスタリング分析の結果であるため、空である可能性もあります。cluster_entries = [[0]*28] などの cluster_entries というリストのリストを作成し、idx_n[i] で見つかった対応する値を対応する cluster_entries[idx_n[i]] に追加することを考えていました。

たとえば、idx_n[20] = 10 の場合、cluster_entries のリスト 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])

残念ながら、このコードは常に最初の要素に追加されます...理由がわかりません

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