请问有人在迭代过程中向“元素”解释以下代码中到底发生了什么?
array = [2,3,4]
for element in array:
element = 3
print(array)
>>>[2, 3, 4]
输出为[2,3,4] 而不是[3,3,3]
我是否正确理解,当使用“ for l中的元素”语法时,我们只能引用但不能修改数组中的每个元素,这里发生了什么?
P.S。我已经看到了一个名为“为什么不像'for数组中的元素'那样进行迭代”的问题,但是我找不到那个,所以我以这种方式提出了这个问题。似乎我发现了以这种方式进行迭代的缺点之一。请尽可能将我重定向到上述问题。
答案 0 :(得分:2)
说明
在上面的示例中,不可能对循环中的变量元素进行任何更改。
代码
要获得预期的输出,请尝试以下操作:
array = [2,3,4]
for i in range(len(array)):
array[i] = 3
print(array)
答案 1 :(得分:0)
当迭代开始元素变量在数组中已经具有当前值时。当您为其分配3时,它将包含它直到下一次迭代时才再次获取数组的当前值,依此类推。 要获得[3,3,3],您需要执行以下操作:
array = [2,3,4]
for i in range(0,len(array)):
array[i]=3
print(array)
答案 2 :(得分:0)
这是因为element
是for
循环范围内的局部变量。
运行此代码段。我希望它可以不言自明(我使用e
而不是element
),也希望使用enumerate
来获取索引:
array = [2,3,4]
for i, e in enumerate(array):
print('i =', i, 'e =', e)
e = 100
print('e = 100-->','e =', e, 'but array[i]=',array[i])
array[i] = e
print('array[i] = e --> array[i]=',array[i])
print('-'*10)
print(array) #=> [100,100,100]
e
和i
是局部变量,它们在每次迭代时接收元素的值和array
的索引。
在循环内部,您可以更改e
的值,但不会影响array
。要更改array
中的值,需要通过索引(array[i]
)来访问它。