如何在Python 3中使用迭代器重新分配多个变量(如果可能)

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

我正在尝试使用迭代器来更改变量列表的值。

>>> a = 1
>>> b = 2
>>> c = 3
>>> for i in [a,b,c]:
        i += 1
>>> a,b,c #Expecting (2, 3, 4)
(1, 2, 3)

这似乎不起作用,我尝试了其他一些方法(请参见下文),但均未成功。1.有人可以告诉我一种解决此问题的更好方法吗?2.有人可以解释为什么上面的示例不符合我的预期吗?3.有人会告诉我如何/在哪里可以找到python帮助文档中的#2吗?

我以前寻找过答案的地方...Reassign variable to original value (defined prior to the loop) at start of each iteration in loopReassigning variables in pythonhttps://docs.python.org/3/reference/datamodel.html#objects-values-and-types

我觉得最后一次引用python文档可能有答案,但是我对大量的信息不知所措,我的大脑很累,我希望有人继续。可以帮助。

也尝试过...

>>> help(__name__)
Help on module __main__:

NAME
    __main__

DATA
    __annotations__ = {}
    a = 1
    b = 2
    c = 3
    i = 4

FILE
    (built-in)

但是如果有的话,这只会让我更加困惑。

上次我尝试过...

>>> a = 1
>>> b = 2
>>> c = 3
>>> R = [a, b, c]
>>> for i in range(3):
    R[i] += 1

>>> a, b, c #Hoping for (2, 3, 4)
    (1, 2, 3)
>>> R #Kind of expected (1, 2, 3) based on the above behavior
    [2, 3, 4]
python-3.x iterator annotations namespaces
1个回答
0
投票

您必须使用循环并在循环期间更改列表的每个值

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

输出将是

[2, 3, 4]

要访问和更改列表中的值,您需要根据项目的位置选择项目(也可以使用切片)。因此,a [0] = 1,a [1] = 2,依此类推。要更改a [0]的值,您需要为其分配一个新值(如在for循环中所做的那样。)>

您的示例不起作用,因为您只是在更改i的值(先是1,然后是2,然后是3),而不是实际更改列表。您没有从列表本身中选择任何项目。

here提供了文档(请参阅第3.1.3节)

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