用于循环修改元素的python

用于循环修改元素的python,python,for-loop,reference,Python,For Loop,Reference,正如对python中for循环的回答中所解释的,for循环不通过引用工作。所以像这样的一个程序, a=[1,2,3] for el in a: el += 1 print(a) 不会修改a 在C++中,有可能通过复制或引用来循环。例如,下面的C++代码修改数组A/P的内容 std::array<int, 3> a{1, 2, 3}; for auto& el : a el += 1; std::数组a{1,2,3}; 适用于汽车和电动汽车:a el+=1;

正如对python中for循环的回答中所解释的,for循环不通过引用工作。所以像这样的一个程序,

a=[1,2,3]
for el in a:
    el += 1
print(a)
不会修改a

<>在C++中,有可能通过复制或引用来循环。例如,下面的C++代码修改数组A/P的内容
std::array<int, 3> a{1, 2, 3};
for auto& el : a
    el += 1;
std::数组a{1,2,3};
适用于汽车和电动汽车:a
el+=1;
< P>是否有一种方法实现Python中的语法,它与上面的C++循环实现相同?

<>编辑:更确切地说,我期待一个语法,类似于C++示例,我在环中有一个对A/< > P元素的引用。
a = [1, 2, 3]
for i in range(len(a)):
   temp = a[i]
   a.pop(i)
   a.insert(i, temp+1)
您只是用较新的值替换元素。

这是因为“el”是列表中每个元素的副本

a=[1,2,3]
for i, el in enumerate(a):
    a[i] += 1
print(a)
您可以这样做来编辑列表

a=[1,2,3]
for el in range(len(a)):
    a[el] += 1
print(a)

问题是列表中的元素是不可变(不可更改)的整数。一种解决方法是将它们替换为(嵌套的)
列表

a = [[1], [2], [3]]
for el in a:
    el[0] += 1
print(a)  # -> [[2], [3], [4]]
但是,由于
a
本身是可变的,您可以简单地执行以下操作:

a = [1, 2, 3]
for i in range(len(a)):
    a[i] += 1
print(a)  # -> [2, 3, 4]

类似于:
对于枚举(a)中的i,v:a[i]+=1
?@Ank好吧,这肯定会起作用。但是
v
又有一个语义值,我不能用它来更新a.AFAIK你不能用
v
然后用python来更新。您必须通过索引执行,或者列表中的元素本身必须是可变的,才能通过
v
执行。这两种语言在这方面是不同的。您也可以检查此项以了解更多信息。如果您使用的是
range(len(a))
,为什么不直接执行
a[i]+=1
,而不是弹出并插入新值