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)
如果我手动输入,值会正确更改。
这行就是问题所在:
[[0]*match_no] * league_size
您在这里所做的是在表单
[0, 0, 0, ...]
上创建一个长度为 match_no
的单个列表,然后创建一个包含 league_size
同一列表的重复项 的列表。也就是说,如果您编辑其中任何一个,您就会编辑所有它们。它实际上是“同一个”列表重复了多次。改为这样做:
team_points = [[0]*match_no for _ in range(league_size)]
这将为每个值创建一个单独的零列表。