Python列表迭代期间元件变形例[复制]

问题描述 投票:1回答:3

这个问题已经在这里有一个答案:

任何人都可以,请解释一下下面的代码迭代过程中到底发生了“元素”?

array = [2,3,4]
for element in array:
    element = 3
print(array)

>>>[2, 3, 4]

输出是[2,3,4]代替[3,3,3]

难道我理解正确的话“以L为元素”使用,当语法,我们只能参考但不能修改哪些呢在这里发生的阵列中的每个元素?

附:我已经看到了名为“为什么你不应该重复,如‘在数组元素’”的问题,但我无法找到一个,所以我问这个样子。好像我发现这种方式迭代的缺点之一。请重定向我如果可能的话中提到的问题。

python
3个回答
2
投票

说明

在上面的例子中的循环的任何变化,以可变元件是不可能的。

为了让您的预期输出试试这个:

array = [2,3,4]
for i in range(len(array)):
    array[i] = 3
print(array)

0
投票

当迭代开始元素变量已经在阵列中的当前值。当你将3到它,它会包含它,直到下一次迭代时,它会再次采取阵列的电流值等。要获得[3,3,3]你需要做的,如下:

array = [2,3,4]
for i in range(0,len(array)):
    array[i]=3
print(array)

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]


Quick explanation

ei是其中接收所述元素的值和array的每次迭代索引局部变量。在循环中,你可以改变e的价值,但它并不影响该array。要改变它是由索引(array)来访问它所需的array[i]内的值。

© www.soinside.com 2019 - 2024. All rights reserved.