home changes contents help options

004:代入

=で代入することができ、多重代入もできます。

例:

 >>> a=32
 >>> a
 32
 >>> a,b,c=1,2,3
 >>> print a,b,c
 1 2 3
 >>> a=b=c=10
 >>> print a,b,c
 10 10 10

配列の代入には注意が必要です。 pythonの配列には、値が変更できるリストと変更できないタプルの二種類がありますが、リストの代入には注意が必要です。 リストを=で代入すると、同じオブジェクトを示すことになるので、aの値を変更するとbも変わってしまいます。

 >>> a=[1,2,3]
 >>> b=a
 >>> a is b
 True
 >>> a.append(4)
 >>> a
 [1, 2, 3, 4]
 >>> b
 [1, 2, 3, 4]
 >>> a is b
 True

これを避けるためには次のような方法があります。

 >>> a=[1,2,3]
 >>> b=a[:]
 >>> c=list(a)
 >>> d=a * 1
 >>> e= [x for x in a]
 >>> f= a + []
 >>> a==b==c==e==f
 True
 >>> a is b, a is c , a is d , a is e , a is f
 (False, False, False, False, False)

タプルの場合は、=で代入するだけでOKです。タプルには変更できないという特性があるためです。

 >>> a=(1,2,3)
 >>> b=a
 >>> a is b
 True
 >>> a=(1,2,3,4)
 >>> b
 (1, 2, 3)