2014-04-03 2 views
0

Thr версия Python является 2.6.6Python: гнездо присваивание список не работает должным образом

n = 0 
list1=["","",""] 
list2=[] 
for ... : 
    # a b c changes every loop 
    list1[0]=a 
    list1[1]=b 
    list1[2]=c 
    list2[n].append(list1) 
    n += 1 

for j in range(n): 
    print list2[j] 

Проблема заключается в том, что каждый элемент в list2 является значение последнего цикла, почему? Кажется, это вызвано мелкой копией, но я не знаю, как это исправить.

+0

Действительно ли 'list2 [n] .append ([a, b, c])' работает для вас? – alecxe

+0

он также работает, thx – callmepeanut

ответ

3

Вам нужно для добавления скопировать из list1:

list2.append(list1[:]) 

В противном случае, то, что добавляемый является ссылкой на тот же единый список.

Смежные вопросы