Как присвоить значение 2d массиву в цикле for - PullRequest
1 голос
/ 30 апреля 2020

Я хочу присвоить значение 2d массиву для l oop
Это мой код

num = 0
n = 3
arr = [[0] * n] * n

for i in range(n):
    for j in range(n):
        arr[i][j] = num
        num +=1

Ожидаемый вывод:

[0, 1, 2]
[3, 4, 5]
[6, 7, 8]

Но фактический вывод is

[6, 7, 8]
[6, 7, 8]
[6, 7, 8]

Есть ли способ исправить это?

1 Ответ

2 голосов
/ 30 апреля 2020
arr = [[0] * n] * n

Создает n копий списка. Таким образом, когда вы вносите изменения в один список, все остальные также меняются. Вы можете изменить его на что-то вроде этого:

arr = [[0 for j in n] for i in n]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...