@Wedwyn1

Вопрос по вложенным циклам в python?

a = [[0]*5] * 5
for i in range(5):
    for j in range(5):
        if i == 2:
            a[i][j] = 1
print(a)


При i = 2, как я понимаю, должен изменяться только третий вложенный цикл, но почему-то все значения a становятся равны 1.
  • Вопрос задан
  • 93 просмотра
Решения вопроса 1
@galaxy
Нельзя заполнять списки так, как вы это делаете в первой строчке.
Приравнивание (или вот такое "копирование" через умножение) не создает копий mutable объекта в python
lst = [1, 2, 3]
lst2 = lst
a = [lst] * 3 # a = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
lst[1] = 17 # a = [[1, 17, 3], [1, 17, 3], [1, 17, 3]], lst2 = [1, 17, 3]
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы