Python:解压缩到数组元素中
问题描述:
为什么当我尝试将目标设置为数组元素时,解包的行为会发生变化?Python:解压缩到数组元素中
>>> def foobar(): return (1,2)
>>> a,b = foobar()
>>> (a,b)
(1, 2)
>>> a = b = [0, 0] # Make a and b lists
>>> a[0], b[0] = foobar()
>>> (a, b)
([2, 0], [2, 0])
在第一种情况下,我得到了我期望的行为。在第二种情况下,两个赋值都使用返回的元组中的最后一个值(即'2')。为什么?
答
当你做a = b = [0, 0]
,你让两个a
和b
指向相同名单。因为它们是可变的,所以如果你改变了,你就改变它们。使用这个来代替:
a, b = [0, 0], [0, 0]
+0
谢谢,波动,对于这个建议。 – 2013-04-18 03:00:22
答
a = b = [0, 0]
#使得a和b的相同列表
+0
gnibbler,你打我太吧。 :)我刚刚意识到我的愚蠢,并回到删除问题,你已经回答。感谢您的及时回复。 – 2013-04-18 02:59:54
拆包并没有改变的行为,你是做多分配在第二个例子,不拆包 – jamylak 2013-04-18 03:13:43