Python希望增加一个数组元素,并在同一列中增加所有数组元素

Python希望增加一个数组元素,并在同一列中增加所有数组元素,python,arrays,matrix,Python,Arrays,Matrix,我有一个二维数组 teamStats = [[0] * 3] * 13 当我想这样做时: teamStats[0][0] = teamStats[0][0] + 1 整个子数组的第一个元素递增,就像我使用teamStats[:][0]试试这个 teamStats = [[0] * 3 for i in range(13)] 通过做 teamStats = [[0] * 3] * 13)] 您创建了13个指向同一对象[0,0,0]的指针,因此当您尝试更改其中一个指针时,您可以同时更改所有指

我有一个二维数组

teamStats = [[0] * 3] * 13
当我想这样做时:

teamStats[0][0] = teamStats[0][0] + 1
整个子数组的第一个元素递增,就像我使用
teamStats[:][0]

试试这个

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

teamStats = [[0] * 3] * 13)]
您创建了13个指向同一对象[0,0,0]的指针,因此当您尝试更改其中一个指针时,您可以同时更改所有指针。

试试这个

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

teamStats = [[0] * 3] * 13)]
您创建了13个指向同一对象[0,0,0]的指针,因此当您尝试更改其中一个指针时,同时也会更改所有指针。

语法

[0]*3
为一个数组创建三个引用,因此操纵一个引用将操纵一个数组

试一试

语法

[0]*3
为一个数组创建三个引用,因此操纵一个引用将操纵一个数组

试一试


您应该以这种方式创建团队统计信息,以便在列表中有不同的列表:

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

您应该以这种方式创建团队统计信息,以便在列表中有不同的列表:

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

这与[0]*3的引用问题相同。0是一个常量,因此无法将其作为带有指针的变量(对象)引用,因为它无法更改。[0]不是常量,而是数组。为什么?我贴出了正确的答案;-)因为它做同样的事情,但是时间复杂度更好。尝试,>>>a=[0代表范围(100000000)]>>>a=[0]*100000000并检查每一个所用的时间。然后尝试更改一个元素,看看它是否正常工作。这与[0]*3的引用问题相同。0是一个常量,因此无法将其作为带有指针的变量(对象)引用,因为它无法更改。[0]不是常量,而是数组。为什么?我贴出了正确的答案;-)因为它做同样的事情,但是时间复杂度更好。尝试,>>>a=[0代表范围(100000000)]>>>a=[0]*100000000并检查每一个所用的时间。然后尝试更改一个元素,看看它是否能正常工作。