这个问题已经在这里有一个答案:
任何人都可以,请解释一下下面的代码迭代过程中到底发生了“元素”?
array = [2,3,4]
for element in array:
element = 3
print(array)
>>>[2, 3, 4]
输出是[2,3,4]代替[3,3,3]
难道我理解正确的话“以L为元素”使用,当语法,我们只能参考但不能修改哪些呢在这里发生的阵列中的每个元素?
附:我已经看到了名为“为什么你不应该重复,如‘在数组元素’”的问题,但我无法找到一个,所以我问这个样子。好像我发现这种方式迭代的缺点之一。请重定向我如果可能的话中提到的问题。
说明
在上面的例子中的循环的任何变化,以可变元件是不可能的。
码
为了让您的预期输出试试这个:
array = [2,3,4]
for i in range(len(array)):
array[i] = 3
print(array)
当迭代开始元素变量已经在阵列中的当前值。当你将3到它,它会包含它,直到下一次迭代时,它会再次采取阵列的电流值等。要获得[3,3,3]你需要做的,如下:
array = [2,3,4]
for i in range(0,len(array)):
array[i]=3
print(array)
这是因为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]
内的值。