如何修改变量集合?

时间:2021-04-23 07:50:35

标签: python

我遇到了一种情况,我需要(经过一些计算)对几个 numpy 数组进行累积求和,即做

a1 = a1.cumsum()
...
a4 = a4.cumsum()

虽然这行得通,但我想让它更“优雅”并执行以下操作:

for a in [a1, a2, a3, a4]:
    a = a.cumsum()

这行不通,我很确定我明白为什么 - 但是有没有一种语法可以使它起作用?

(我相信如果对象是可变的并且我使用了一些就地修饰符,即,如果我可以在循环中只写 a.some_inplace_modifier(),这会起作用。但在这里我需要使用一个返回的函数一个新对象 - 所以我想列表中的对象是否可变都无关紧要?)

2 个答案:

答案 0 :(得分:2)

您可以使用列表推导式:

a1, a2, a3, a4 = [x.cumsum() for x in [a1, a2, a3, a4]]

答案 1 :(得分:0)

在您当前的语法中,a 是列表中每个元素的副本

修改变量 a 不会导致列表中的元素被修改。

您需要直接修改列表,例如循环索引:

var yourList = [3, 4, 5]
for i in range(len(yourList)):
   yourList[i] = yourList[i].comsum()  

或者使用列表推导来创建一个新列表并替换旧列表:

yourList = [a.cumsum() for a in yourList]