python 列表突变(for in loop vs range(len))

标签 python arrays loops for-loop

为什么下面的不改变传入的列表:

def modify(listarg):
    for x in listarg:
        x=x*2

而这确实会改变它:

def modify(listarg):
    for x in range(len(listarg)):
        listarg[x]=listarg[x]*2

最佳答案

第一个只是给你迭代变量 (x),本质上 for...in 使用内置的 iter 函数。在第二种情况下,您实际上将值绑定(bind)到列表。

for x in listarg:
  x=x*2

上面的代码可以看成:

i = iter(listarg)
x = i.next() # fetch first value
# this value then you double
# which won't effect the element

有关更多详细信息,您可以引用此 article .

关于python 列表突变(for in loop vs range(len)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27469981/

相关文章:

java - 使用 Fernet 在 Java 上进行对称加密

javascript - 如何为数组中的相同字符串值生成永久的 React 键?

php - foreach数组作为键=>值..在每一列名称中插入一个值作为数组键,所有这些都在一行中

Java 多级中断

python - Matplotlib:如何制作由点(圆圈)组成的虚线?

python - 将列表转换为字符串

c++ - 在不使用新数组的情况下就地旋转二维数组 - 最佳 C++ 解决方案?

loops - 如何编写传递给函数的迭代器类型?

java - Java 中的循环从字符串中获取 2 个值

python - “请求”对象没有属性 'json'