[Python] タプルに入門する(生成、タプルからの代入、イミュータブル)
こんにちは、@yoheiMuneです。
最近、『入門 Python 3(O'Reilly)』でPythonの基礎に立ち戻って勉強をしています。今日はその中で、Pythonのタプルについてブログを書きたいと思います。
『入門 Python 3(O'Reilly)』
これからもPythonの基礎をしっかりと押さえるべく、今回のような記事を書いていけたらと思います。
最後になりますが本ブログでは、Web系ツール・Python・Swift・Java・フロントエンド・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!
最近、『入門 Python 3(O'Reilly)』でPythonの基礎に立ち戻って勉強をしています。今日はその中で、Pythonのタプルについてブログを書きたいと思います。
目次
タプル(Tuple)とは
タプルとはPythonのデータ構造の1つで、(1, 2, 3)
という形式で表されます。タプルの特徴としては以下の感じです。- 様々なデータ型を持つことができる
- 一度生成したらデータを書き換えできない(=イミュータブル)
- 関数で複数戻り値を返す際に使える
- 辞書(Dictionary)のキーに使える
タプルの生成
タプルは以下のように生成することができます。# 空のタプルを作る empty_tuple = () print(empty_tuple) # () # 値を代入して作る(1つの場合) one_marx = "Groucho", print(one_marx) # ('Groucho',) # または、かっこをつけても良い one_marx = ("Groucho",) # 一番後ろの「,」が必要 print(one_marx) # ('Groucho',) # 初期データが複数の場合は、こんな感じ multi_number = "One", "Two", "Three" print(multi_number) # ('One', 'Two', 'Three') # 同じく、かっこ付きでも良い multi_number = ("One", "Two", "Three") print(multi_number) # ('One', 'Two', 'Three') # tupleを使うことで、他のデータ型から変換できる tuple_from_list = tuple([1,2,3]) print(tuple_from_list) # (1, 2, 3)こんな感じで、タプルを生成することができます。タプルは(後述の通り)イミュータブルで生成後に値を変えることができないので、初期化時に値を設定する必要があります。
タプルから値を取り出す
タプルから値を取り出す場合には、以下のように行います。tuple_data = 1,2,3,4,5 print(tuple_data[1]) # 2 for d in tuple_data: print(d) # 1 2 3 4 5この辺はリストなどと同じなので、わかりやすいですね。
タプルから変数に代入する
タプルが便利なのはこの辺です。タプルを使うことで、複数の変数に一度に値を代入することができます。multi_number = "One", "Two", "Three" # タプルを使って、一気に3つの変数に代入する a, b, c = multi_number print(a) # 'One' print(b) # 'Two' print(c) # 'Three'この特徴を利用することで、関数から複数の値を返すことができます。
# 関数の戻り値をタプルにすることで、複数の値を返却できる def multi_return_function(): return 1,2 a, b = multi_return_function() print(a) # 1 print(b) # 2また、タプルを使うことで、2つの変数の値を入れ替える場合に(ソートアルゴリズムなどで)、tmpなどの一時変数なしに入れ替えることができます。
ice1 = "Strawberry" ice2 = "Vanilla" ice2, ice1 = ice1, ice2 print(ice1) # Vanilla print(ice2) # Strawberryと、この代入というところがタプルの一番の魅力ではないかなーと、感じています。
タプルは生成後に値を変更できない(イミュータブル)
タプルは最初に少し触れた通り、一度タプルを生成した後には、値を変更することができません。この性質により、生成後に値が変わらないことを保証することができます(JavaScriptなどではわざわざこのイミュータブルを実現するためのImmutable.jsというライブラリも存在します)。# 生成後に値を変更すると、エラーとなる tuple_is_immutable = (1,2) tuple_is_immutable[0] = 10 # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # TypeError: 'tuple' object does not support item assignmentということで、タプルはイミュータブルで、値を変更されたくない場合には便利です。
参考資料
今回の記事を書くために、以下の本で勉強しました。基本的なことが網羅的に描かれているので、基礎の学習に非常にいいなぁと感じています。『入門 Python 3(O'Reilly)』
最後に
本日は、Pythonのタプルというデータ型についてブログを書きました。僕はPythonを始めた頃、タプルというデータ型を理解していなくて、少し苦労した気がします(今までやってきたJavaやJavaScriptやSwiftではなかったor使わなかった)。こーゆうデータ型もあるんだなーと勉強になった覚えがあります。これからもPythonの基礎をしっかりと押さえるべく、今回のような記事を書いていけたらと思います。
最後になりますが本ブログでは、Web系ツール・Python・Swift・Java・フロントエンド・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!