Списки являются изменяемыми типами - для создания копии (а не просто прохождения одного и того же списка) вам нужно сделать это явно:
listoflists.append((list[:], list[0]))
Однако list
уже имя встроенного Python - было бы лучше не использовать это имя для вашей переменной. Вот версия, которая не использует list
в качестве имени переменной и делает копию:
listoflists = []
a_list = []
for i in range(0,10):
a_list.append(i)
if len(a_list)>3:
a_list.remove(a_list[0])
listoflists.append((list(a_list), a_list[0]))
print listoflists
Обратите внимание, что я продемонстрировал два разных способа сделать копию списка выше: [:]
и list()
.
Первый, [:]
, создает срез (обычно часто используемый для получения только части списка), который, как бывает, содержит весь список и, следовательно, фактически является копией списка.
Второй, list()
, использует фактический конструктор list
type для создания нового списка, который имеет содержимое, равное первому списку. (Я не использовал его в первом примере, потому что вы переписывали это имя в свой код, что является хорошим примером того, почему вы этого не хотите!) [/ G6]