Python の代入の色々な書き方



#
a = 1

2つ以上の変数に同じオブジェクトを代入


#
a = b = c = 1

変数の入れ替え

#
a = "Hello"
b = "こんにちは"
a, b = b, a

a  # "こんにちは"
b  # "Hello"

2つ以上の変数に異なるオブジェクトを代入

セミコロンで区切って代入文を書く

#
a = 0; b = 1; c = 2

◯ オブジェクトの集まりを同時に代入する。

# tuple 1
a, b, c = 0, 1, 2

# tuple 2
a, b, c = (0, 1, 2)


# list
a, b, c = [0, 1, 2]


# range
a, b, c = range(3)


# function
def f():
    return 0, 1, 2

a, b, c = f()


# iterator
a, b, c = (i for i in range(3))


# stdin 1
# 標準入力から 0, 1, 2 を入力
a, b, c = eval(input())
0, 1, 2


# stdin 2
# 標準入力から 0, 1, 2 を入力
# stdin 1 に比べて長いけど、確実に int が代入される安全な書き方
a, b, c = map(int, input().replace(' ', '').split(',')) 
0, 1, 2


for 文の in の中に書けるものを右辺において複数同時に代入することができます。ちなみに 0, 1, 2 も 関数 f も tuple を生成しています。

>>> 0, 1, 2
(0, 1, 2)
>>> 
>>> f()
(0, 1, 2)
>>>


括弧 () がなくても tuple なんですね。

>>> for i in 0, 1, 2: i
0
1
2
>>> 



代入のもう少し詳しい動作について、図を使って説明しています。