Я пытаюсь распечатать список списков из цикла, но получить неправильный вывод! Повторяется последний список, добавленный в большой список.Список списков в Python -> Получение неправильного вывода
Выход я ожидал:
FINAL LIST:
[[(1, 2), (2, 3)],
[(2, 3), (3, 4)]]
Выход я получаю:
FINAL LIST:
[[(2, 3), (3, 4)],
[(2, 3), (3, 4)]]
Что я здесь делаю неправильно? Вот мой код:
a = []
count = 1
#Function that generates some nos. for the list
def func():
del a[:]
for i in range(count,count+2):
x = i
y = i+1
a.append((x,y))
print '\nIn Function:',a #List seems to be correct here
return a
#List of lists
List = []
for i in range(1,3):
b = func() #Calling Function
print 'In Loop:',b #Checking the value, list seems to be correct here also
List.append(b)
count = count+1
print '\nList of Lists:'
print List
Что вы думаете 'дель в [:]' делает? –
del a [:] опустошает внутренний список каждый раз, когда я вызываю функцию, так что можно добавить новый набор кортежей. – HVN19
Да, он просто опустошает список. Но это все тот же контейнер, каждый вызов функции модифицирует один и тот же объект. Итак, в конце 'List' содержит две ссылки на список' a'. Просто объявляйте 'a' как локальную переменную. –