Задать вопрос
@link_vrb

Почему не работает так, как надо?

У меня есть код:
a=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b=[[], [], []]
print(b)
for i in a:
	for j in i:
		b[a.index(i)].append(j)
a[0][0]=0
print(a)
print(b)

и второй код:
a=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
b=[[]]*3
print(b)
for i in a:
	for j in i:
		b[a.index(i)].append(j)
a[0][0]=0
print(a)
print(b)


И там и там переменная b одна и та же, но результат разный. Почему так?
  • Вопрос задан
  • 84 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Потому что литерал [] объявляет новый список, а оператор * копирует ссылку на тот же список.
Ответ написан
Комментировать
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Потому что во втором коде вы делаете в списке b три ссылки на один и тот же экземпляр списка, а в первом - три разных экземпляра списка в списке b.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы