2013-07-12 2 views
0

두 개의 동일한 크기의 두 목록이 있습니다. 28 개 세트가 있고, 세트 당 몇 개의 요소가 있는지 계산해야하는데,이 세트는 비어있을 수 있습니다. 클러스터링 분석의 결과 cluster_entries = [[0] * 28]과 같은 cluster_entries라는 목록을 작성한 다음 해당하는 cluster_entries [idx_n [i]]에 대응하는 값을 추가하는 것으로 생각했습니다.목록 선택적 삽입의 파이썬 목록

so 내가 idx_n 경우 예를 들어 [20] 내가 값 20. 따라서 나는 다음과 같은 코드를 작성 cluster_entries 목록 (20)에 추가 할 10 =

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

불행하게도이 코드는 첫 번째 요소에 항상 추가합니다. .. 그리고 왜 이해가 안 돼

답변

0

귀하의 목록

cluster_entries = [[0]*28] 

은 동일한 목록에 대한 28 개의 동일한 참조 목록입니다.

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

대신 28 개의 고유 목록을 사용해야합니다. 또한

idx_n 반복의보다 파이썬 방법은

여전히 작동하지 않습니다
for i, idx in enumerate(idx_n): 
    print i, idx 
    cluster_entries[ int(idx) ].append(list_from_files[i]) 
+0

, 나는 [0] * 28 ...] 가슴은 여전히 ​​모든 것을에 하나 추가 cluster_entries의 =으로 시도이다 목록의 동일한 항목 또는 목록의 모든 항목과 동일한 값 ... – MixturaDementiae

+0

내 대답을 다시 읽습니다. 당신은 * [[[0] * 28]'을 사용할 수 없습니다. 목록 이해력을 사용해야합니다. – chepner

+0

죄송합니다. 잘못된 방식으로 자신을 표현했습니다. 정확히 쓴 내용을 시도했습니다. cluster_entries = [[0] 범위 내에서 (28)] 실수로 죄송합니다. – MixturaDementiae