我在Python中使用for
循环,并试图习惯它们处理变量的方式。
获取以下代码:
a=[1,2,3,4,5]
b=a
b[0]=6
执行此操作后,b
和a
的第0个元素应为6
。 =
符号指向数组的引用,是吗?
现在,我采用for
循环:
a=[1,2,3,4,5]
for i in a:
i=6
我的期望是a
的每个元素现在都是6
,因为我会想象i
指向a
中的元素而不是复制它们;但是,情况似乎并非如此。
谢谢你的澄清,谢谢!
答案 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
代表的内容。
答案 2 :(得分:0)
就像你说的那样,“=符号指向参考”。所以你的循环只是将'i'引用重新分配给5个不同的数字,每个数字依次。