Матрица Python дает тот же результат, что и в последней записи - PullRequest
2 голосов
/ 29 апреля 2019

Я пытаюсь создать матрицу, используя список из списка с фиксированным количеством элементов.Я инициализировал матрицу с 0 для каждой ячейки, затем перебрал все элементы и в каждой ячейке я умножил каждую строку и номер столбца следующим образом.

test = [[0] * (10)] * 10
for i in range(10):
    for j in range(10):
        test[i][j] = i * j

Когда я печатаю test, результат

[[0, 9, 18, 27, 36, 45, 54, 63, 72, 81], [0, 9, 18, 27, 36, 45, 54, 63, 72, 81], [0, 9, 18, 27, 36, 45,54, 63, 72, 81], [0, 9, 18, 27, 36, 45, 54, 63, 72, 81], [0, 9, 18, 27, 36, 45, 54, 63, 72, 81], [0, 9,18, 27, 36, 45, 54, 63, 72, 81], [0, 9, 18, 27, 36, 45, 54, 63, 72, 81], [0, 9, 18, 27, 36, 45, 54, 63,72, 81], [0, 9, 18, 27, 36, 45, 54, 63, 72, 81], [0, 9, 18, 27, 36, 45, 54, 63, 72, 81]]

Похоже, вычисляется только последний i с i=9.То, что я ожидаю, является результатом умножения строк и столбцов.Как это сделать в python?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2019

В вашем списке программ было клонировано до 10 раз, следовательно, он производит последнюю модификацию матрицы.

0 голосов
/ 29 апреля 2019

Я бы сначала не создавал пустой список, просто использовал бы понимание списка.

test = [[i * j for i in range(10)] for j in range(10)]

С Numpy:

size = np.arange(10)

test = size * size[:, None]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...