列表中的Python值替换

时间:2019-04-14 15:52:14

标签: python list

我必须犯一些愚蠢的错误,但是我真的不知道为什么它会这样工作。谁能向我解释一下?

placement = [0]*4
for image in placement:
    image = 1
print(placement)

输出:[0, 0, 0, 0]

2 个答案:

答案 0 :(得分:2)

当你说:

image = 1

您仅更改名为image的变量的值;换句话说,您要将名称 image绑定到新值。这根本不影响原始列表。

更详细地讲:当您说for image in placement时,发生的是在for循环的每次迭代中,名称image被绑定到该位置中适当位置的值。名单。再次为其分配仅将其重新绑定到其他值。

上面的for循环等效于:

  image = placement[0]
  image = 1  # does not change placement[0]
  image = placement[1]
  image = 1  # does not change placement[1]
  image = placement[2]
  image = 1  # does not change placement[2]
  image = placement[3]
  image = 1  # does not change placement[3]

要更改列表中的项目,您可以分配给特定索引:

for i in range(len(placement)):
  placement[i] = 1  # assigns into a specific position in the list, changing its contents

答案 1 :(得分:2)

在数组上使用for in进行迭代时,如果每次迭代修改结果元素都不会影响原始数组。 使用enumerate遍历带有索引的数组并分配索引

for index, image in enumerate(placement):
    placement[index] = image + 1