Python: изменение двумерного списка в цикле
Столкнулся с странной особенностью двумерных списков.
ll = [['']*5]*5
for i in range(0, 5):
for j in range(0, 5):
if (i==j) :
print('yes', i, j)
ll[i][j] = 'yes'
if (i!=j):
print('no', i, j)
ll[i][j] = 'no'
#ожидаю получить строку 'yes', но получаю 'no'
ll[0][0]
#здесь получаю строку 'no'
ll[0][1]
Как объяснить такой результат?
Ответы (1 шт):
Автор решения: Danis
→ Ссылка
вы создаёте список, а потом умножаете его на 5, таким образом он не клонируется, а копируется сам объект со всеми его адресамм
поэтому надо место ll = [[''] * 5] * 5 писать ll = [[''] * 5 for _ in range(5)]