0

デスティネーションを配列要素にしようとすると、アンパックの動作が変わるのはなぜですか?

>>> 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 番目のケースでは、両方の割り当てで、返されたタプルの最後の値 (つまり '2') が使用されます。なんで?

4

2 に答える 2

3

するとa = b = [0, 0]、両方aを作成して同じリストをb指します。それらは可変であるため、どちらかを変更すると両方が変更されます。代わりにこれを使用してください:

a, b = [0, 0], [0, 0]
于 2013-04-18T02:56:31.533 に答える
2

a = b = [0, 0]# a と b を同じリストにする

于 2013-04-18T02:55:50.927 に答える