遍历列表并更改列表值

Looping through list and changing list values

我必须遍历给定列表并修改其元素。

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]]

我需要了解为什么我的代码给出了不同的输出。如果你能告诉我为什么会这样会很有帮助。

这应该有效:

In [21]: [[0, i, 0, 0] for i in range(10)]
Out[21]: 
[[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]]

...或者这里有一个更详细的版本:

result = []
for i in range(10):
    result.append([0, i, 0, 0])
print(result)