在嵌套for循环中向二维数组输入整数会被增量输入的值替换

问题描述 投票:0回答:1
league_size = int(input("How many teams are in the league?"))
match_no = int(input("How many maches are played?"))
team_points = [[0]*match_no] * league_size

for i in range(len(team_points)):
    for j in range(len(team_points[i])):
        point = int(input("Input point of " + str(j+1) + " match"))
        team_points[i][j] = point
print(team_points)

当我在第一个循环中输入值时,它们会正确保存,但随着

i
的增加,我在增加之前输入的值将被我在增量中输入的值替换。

team_points = [[0,0,0], [0,0,0]]

for i in range(len(team_points)):
    for j in range(len(team_points[i])):
        point = int(input("Input point of " + str(j+1) + " match"))
        team_points[i][j] = point
print(team_points)

如果我手动输入,值会正确更改。

python multidimensional-array nested-for-loop
1个回答
0
投票

这行就是问题所在:

[[0]*match_no] * league_size

您在这里所做的是在表单

[0, 0, 0, ...]
上创建一个长度为
match_no
的单个列表,然后创建一个包含
league_size
同一列表的重复项 的列表。也就是说,如果您编辑其中任何一个,您就会编辑所有它们。它实际上是“同一个”列表重复了多次。改为这样做: team_points = [[0]*match_no for _ in range(league_size)]

这将为每个值创建一个单独的零列表。

© www.soinside.com 2019 - 2024. All rights reserved.