遍历列表并更改列表值
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)
我必须遍历给定列表并修改其元素。
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)