LoginSignup
1
1

More than 5 years have passed since last update.

多重代入の便利な用法と注意

Last updated at Posted at 2018-10-14

Pythonの代入文では、複数の値を複数の名前にバインドできます。

a, b = 1, 'foo'

この用法は、通常の1つの名前への代入と連ねて使用することも可能です。

a, b = c = 1, 'foo'

上記の代入文では、ctuple型の(1, 'foo')を指します。
個別の値と、値のシーケンスの両方に名前を付けたいときに簡潔に記述できて便利です。
ctupleではなく、listで取得したい場合、次のように書きます。

a, b = c = [1, 'foo']

代入を連ねた用法を使用する際に、値がmutableの場合は注意が必要です。例えば次のような場合で、listオブジェクトの['foo']がmutableです。

a, b = c = 1, ['foo'] 

この例の場合、bは、['foo'] を、cは、(1, ['foo'])を指していますが、これらの['foo']は同じlistオブジェクトを指しています。ですので、

b.append('bar')

とすると、bc[1]も、['foo', 'bar'] に変わります。従って、cは、(1, ['foo', 'bar'])となります。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1