Python引用为循环

时间:2011-08-26 16:18:18

标签: python

我在Python中使用for循环,并试图习惯它们处理变量的方式。

获取以下代码:

a=[1,2,3,4,5]
b=a
b[0]=6

执行此操作后,ba的第0个元素应为6=符号指向数组的引用,是吗?

现在,我采用for循环:

a=[1,2,3,4,5]
for i in a:
    i=6

我的期望是a的每个元素现在都是6,因为我会想象i指向a中的元素而不是复制它们;但是,情况似乎并非如此。

谢谢你的澄清,谢谢!

3 个答案:

答案 0 :(得分:5)

这不是它的工作原理。 for循环遍历a的值。变量i实际上并不知道它本身是什么。基本上,发生了什么:

# this is basically what the loop is doing:
# beginning of loop:
i = a[0]
i = 6
# next iteration of for loop:
i = a[1]
i = 6
# next iteration of for loop:
i = a[2]
i = 6
# you get the idea.

索引的值在任何时候都没有变化,唯一要改变的是i的值。

你正试图这样做:

for i in xrange(len(a)):
    a[i] = 6 # assign the value at index i

答案 1 :(得分:5)

python中的所有内容都被视为引用。执行b[0] = 6时会发生什么,即将6分配给LHS定义的适当位置。

在第二个示例中,您将数组中的引用分配给i,以便i为1,然后是2,然后是3,...但i永远不会是数组的元素。因此,当您为其指定6时,您只需更改i代表的内容。

如果您想了解更多有关细节的信息,

http://docs.python.org/reference/datamodel.html是一本有趣的读物。

答案 2 :(得分:0)

就像你说的那样,“=符号指向参考”。所以你的循环只是将'i'引用重新分配给5个不同的数字,每个数字依次。