【发布时间】:2018-08-07 14:11:02
【问题描述】:
我必须遍历给定的列表并修改其元素。
list1 = [[0, 0, 0, 0]] * 10
for i in range(len(list1)):
for j in range(0, 10):
list1[i][1] = j
print(list1)
#output:[[0, 9, 0, 0], [0, 9, 0, 0], [0, 9, 0, 0], [0, 9, 0, 0], [0, 9, 0, 0], [0, 9, 0, 0], [0, 9, 0, 0], [0, 9, 0, 0], [0, 9, 0, 0], [0, 9, 0, 0]]
#But I want the output to be: [[0, 0, 0, 0], [0, 1, 0, 0], [0, 2, 0, 0], [0, 3, 0, 0], [0, 4, 0, 0], [0, 5, 0, 0], [0, 6, 0, 0], [0, 7, 0, 0], [0, 8, 0, 0], [0, 9, 0, 0]]
我需要了解为什么我的代码会给出不同的输出。如果您能向我解释为什么会这样,将会很有帮助。
【问题讨论】:
-
list1[i][1] = j不应该是list1[j][1] = j吗?此外,如果您只想更改指定子列表的 1 个位置,则不需要迭代 2 次 - 具有此类更改的第二个for就足够了。 -
另外,您可能想看看this thread。
-
我试过 list1[j][i] = j 但输出是一样的
标签: python list loops nested-loops nested-lists