タプルの基礎

入門Python3 3.3


タプルとはイミュータブルなリストとのこと。なので基本的にはリストのような感じで扱えるが要素の追加や変更などはできない。

空タプルの生成

tuple関数(正確にはシーケンス型らしい)か()で生成できる。

ary1 = tuple()
ary2 = ()
print(ary1)
print(ary2)
$ py main.py
()
()

タプルの生成

タプルの生成だけど、リストと違い少し注意点がある。いくつかの例をみてしっかり頭に叩き込もう。

まず要素が一つの場合のタプルの生成

ary = 'foo',
print(ary)
$ py main.py
('foo',)

必ず末尾にカンマを付けること。もしカンマを忘れた場合は単なる文字列の代入となってしまう。

次に要素が複数の場合のタプルの生成

ary = 'foo','bar','baz',
print(ary)
$ py main.py
('foo', 'bar', 'baz')

複数の場合でも同じですね、ただ複数の場合は最後のカンマを省略することができます。

ary = 'foo','bar','baz' # 末尾のカンマを省略してもOK
print(ary)
$ py main.py
('foo', 'bar', 'baz')

ちなみに()で囲っても囲わなくても違いは無いが、見た目の分かりやすさとしては()で囲った方が良いように思える。

タプルのアンパック

タプルから個別の変数へ値を受け取ることができる。

ary = ('foo','bar','baz')
a,b,c = ary
print(a,b,c)
$ py main.py
foo bar baz

ちなみにこの機能はリストでも可能だ。

ary = ['foo','bar','baz']
a,b,c = ary
print(a,b,c)
$ py main.py
foo bar baz

このアンパックを利用して値の交換の処理を簡単に実装できる

a = 'foo'
b = 'bar'
print(a,b)

a,b = (b,a) # 値の交換
print(a,b)
$ py main.py
foo bar
bar foo

ひっくり返ってますね。C言語等では一時変数を用意する必要がありますがこの機能を使えばスッキリかけますね。