2016-03-25 22 views
1

Listelerin bir listesi var ve her listeyi iteration'da güncellemek istiyorum. aşağıdaki gibi Ben listemi başlatıldı: iteration'da listelerin listesi güncelleniyor

my_list = [[0]*n]*n 

ben gibi bir şey ile, iç listeleri güncelleştirmek istediğiniz

:

for i in range(something): 
    for j in range(anotherthing): 
     my_list[i][j] = something 

ne olur tüm liste i listesinden ziyade güncelleştirilmiş olmasıdır yalnızca her iterasyonda [[1,2], [1,2]]. İstediğim şey, ilk iterasyonda [[1,2], [0,0]] olarak başlattım ve [[1,2], [değerler]] olarak. Neyi yanlış yapıyorum?

cevap

3

liste çarpma operatörü * kopyalarını oluşturmak, ama aynı veriler için çok sayıda başvuru oluşturur etmez. listelerinin listenizi başlatmak için

my_list = [[0 for i in range(n)] for j in range(n)] 
0

kullanın bu ve iyi çalışır: Yerine * kullanarak listenizi başlatılıyor için comprehensions kullanarak düşünün.

x = [[0]*n for i in range(n)] 

orijinal kod çok sublists bir listesini oluşturur ancak sublists her biri aynı nesneye başvurur.

Not: Python3 kullanıyorum. 2 kullanıyorsanız, range() yerine xrange() kullanmanız gerekebilir.

İlgili konular