Python хотите увеличить один элемент массива, и он увеличивает все элементы массива в том же столбце - PullRequest
0 голосов
/ 27 мая 2020

У меня есть двумерный массив.

teamStats = [[0] * 3] * 13

, когда я хочу это сделать:

teamStats[0][0] = teamStats[0][0] + 1

приращение первого элемента целого подмассива, как если бы я сделал с teamStats[:][0]

Ответы [ 3 ]

1 голос
/ 27 мая 2020

Синтаксис

[0]*3

создает три ссылки на один массив, поэтому манипулирование одной ссылкой приводит к манипулированию одним массивом.

Попробуйте

teamStats = [[0 for j in range(3)] for j in range(13)]
1 голос
/ 27 мая 2020

Вы должны создать статистику команды таким образом, чтобы внутри списка были разные списки:

teamStats = [[0,0,0] for i in range(13)]
0 голосов
/ 27 мая 2020

Попробуйте это.

teamStats = [[0] * 3 for i in range(13)]

Выполняя

teamStats = [[0] * 3] * 13)]

, вы создаете 13 указателей на один и тот же объект [0,0,0], поэтому, когда вы пытаетесь изменить один из них, одновременно вы меняете их все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...