Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
完全理解循环python_Python_Python 3.x_For Loop_Reference - Fatal编程技术网

完全理解循环python

完全理解循环python,python,python-3.x,for-loop,reference,Python,Python 3.x,For Loop,Reference,我马上从一个小代码示例开始: def foo(): return 0 a = [1, 2, 3] for el in a: el = foo() print(a) # [1, 2, 3] 我想知道在这种情况下,el是什么。由于a保持不变,我推断el是一个int的引用。但是在重新分配它之后,el指向一个新的int对象,它与列表a没有任何关系 如果我理解正确,请告诉我。此外,你是如何避开这个蟒蛇的?enumerate()是正确的调用吗 for i, el in enumera

我马上从一个小代码示例开始:

def foo():
    return 0

a = [1, 2, 3]

for el in a:
    el = foo()

print(a) # [1, 2, 3]
我想知道在这种情况下,el是什么。由于a保持不变,我推断el是一个int的引用。但是在重新分配它之后,el指向一个新的int对象,它与列表a没有任何关系

如果我理解正确,请告诉我。此外,你是如何避开这个蟒蛇的?enumerate()是正确的调用吗

for i, el in enumerate(a):
    a[i] = foo()

工作正常。

是的,您理解正确
for
将目标变量
el
设置为指向
a
中的每个元素
el=foo()

使用
enumerate()
是替换
a
中的引用的好方法

在这种情况下,您可能会发现Ned Batchelder提供的帮助

另一种方法是创建一个新的列表对象,并重新绑定
a
以指向该列表。您可以使用列表理解构建这样的列表:

a = [foo() for el in a]