对于每个循环,更新变量

时间:2020-06-18 13:39:51

标签: python for-loop

我有一个任务,我必须实现代码存根。简化版本基本上是:

for a,b in zip(var_a,var_b):
   # implementation here

我很确定任务基本上是用变量b更新a。但这很奇怪,因为我的理解是a,b只是var_a,var_b的副本。因此,更改a,b的值不会影响var_a,var_b。 我说的对吗?

当然,我可以轻松地更改代码,所以我确实更新了var_a,var_b,但是我不认为更改存根是有意的,这要么意味着存根设计不当,要么我无法正确理解任务

能否请您确认在此for循环中我只能访问副本,还是有suuper简便的方法可以在不更改存根的情况下更新原始变量?

1 个答案:

答案 0 :(得分:0)

a和b不是var_a和var_b的副本,而是它们分别指向var_a和var_b中的第一个元素。

关于更改其值-可以做到,但是当然,只要重新分配它们就不会影响var_a或var_b。 因此,如果它们是可变的,那不是做到这一点的方法。

但是例如,如果var_a和var_b是列表列表,则可以执行以下操作: a。扩展(b)。它将影响var_a中的列表。

了解 objects mutability in python

>>> var_a = [[1,2,3],[10,20,30]]
>>> var_b = [['a','b','c'], ['A','B','C']]
>>> for a, b in zip(var_a, var_b):
...  a.extend(b)
...
>>> var_a
[[1, 2, 3, 'a', 'b', 'c'], [10, 20, 30, 'A', 'B', 'C']]

但是整数是不可变的:

>>> var_a = [1,2,3]
>>> var_b = [10,20,30]
>>> for a, b in zip(var_a, var_b):
...  a += b
...
>>> var_a
[1, 2, 3]
相关问题