【Python連載】タプルの特徴と基本的な作り方


タプルとは

今回は、Pythonで複数の要素をまとめて扱うことができる「タプル」について扱います。
タプルとはなにか、そしてタプルの基本的な作り方についてみていきましょう。


「タプル」とは、リストと同様に、複数の要素を1つのかたまりとして扱う事ができるデータ型です。
リストについては、以下の記事で解説しています。

さて、リストは [] でカンマ区切りの要素を囲むことで複数の要素を1つのリストとして扱いました。
タプルでは一般的に、 () でカンマ区切りの要素を囲って1つのタプルとして扱います。
実際にやってみましょう。

list1 = ["Hello", "List", 100]       ###リストを作成
print(list1)
tuple1 = ("Hello", "Tuple", 1000)    ###タプルを作成
print(tuple1)
C:\Python> python 7-1.py
[‘Hello’, ‘List’, 100]

(‘Hello’, ‘Tuple’, 1000)

リストもタプルも、どちらも複数の要素を1つのデータとして扱うという点は変わりません。それでは、2つの違いはなんでしょうか?
主な違いとしては、以下の3つが挙げられます。

  • 記述の仕方が異なる
  • タプルはイミュータブルである(要素の追加/削除/変更などが行えない)
  • リストよりもパフォーマンスで勝る(場合がある)

3つ目については詳細は割愛しますが、リストとタプルをパフォーマンス面で比較した際、
使い所によってはタプルのほうが有利になる場合があります。
ですが、今の時点では特に考える必要はありません。
Pythonに習熟し、裏側でどのような挙動をしているか知る必要が出てきたら意識するようにしてみてください。

さて、それでは上で挙げた2つの特徴についてみていきましょう。


タプルとリストの違い

1つ目は、記述の仕方についてです。
こちらは特徴的な違いというよりも、プログラム上でタプルをどのように記述するのか、という
タプルの作り方に関する話になります。

タプルの記述の方法は上で書いたとおり、カンマ区切りの要素を () で囲って記述します。
() を省略して、カンマ区切りの要素のみでもタプルとして認識されます。
しかし、プログラム上でカンマのみで区切られた要素は分かりづらいという点や、
大きな式などの中でタプルを使うような場合は () をつけなければならないという点などから
一般的にタプルを用いる際は () で囲って記述するようにします。
それでは、実際に作成してみましょう。

tuple1 = "括弧なし", 100      ###括弧なしでタプルを作成
tuple2 = ("括弧あり", 200)    ###括弧ありでタプルを作成
print(tuple1)
print(tuple2)
C:\Python> python 7-1.py
(‘括弧なし’, 100)
(‘括弧あり’, 200)

出力結果を見ると、括弧なしで記述した場合も括弧で囲まれたタプルの形式で出力されています。

また、要素が1つだけのタプルを作成する場合は、要素の後ろにカンマを記述します。
以下のような書き方です。

tuple1 = ("要素1つ",)     ###要素1つでタプルを作成
print(tuple1)
C:\Python> python 7-1.py
(‘要素1つ’,)

それ以外の方法として、組み込み関数を使ったタプルの作り方をみてみましょう。
リストの場合は list() という関数でリストを作成できますが、タプルの場合も同じように
tuple() という組み込み関数を使うことでタプルを作ることが出来ます。
例えば、組み込み関数の range() と tuple() を使えば連続する整数をタプルにすることが出来ます。
また、文字列を使えば複数の文字列を1文字ずつに分解してタプルを作ることが出来ます。

tuple1 = tuple(range(-2,4))     ###-2から4までの連続した整数でタプルを作成
print(tuple1)
tuple2 = tuple("一十百千万億")	###文字列を1文字ずつに分解してタプルを作成
print(tuple2)
C:\Python> python 7-1.py
(-2, -1, 0, 1, 2, 3)
(‘一’, ‘十’, ‘百’, ‘千’, ‘万’, ‘億’)

このように、タプルを作成する方法はいくつか用意されています。
まずは一番基本的な、カンマ区切りの要素を () で囲む方法から覚えていきましょう。

さて、タプルとリストの違いの2つ目ですが、タプルはイミュータブルなデータ型であり、
リストはミュータブルなデータ型であるという点です。ミュータブルとは、要素が変更可能であることです。
リストは、いくつか用意されているメソッドを用いてリスト内の要素を変更したり、要素を追加・削除することが出来ます。
それに対してイミュータブル、つまり変更不可能なデータ型であるタプルは、
一度宣言したタプルに対してあとから要素を追加したり、タプル内の要素を変更したりすることは出来ません。
Pythonには他のプログラミング言語にある定数という要素がありませんが、タプルがイミュータブルであることから
定数のような使われ方をする場合があります。

この2つ目の違いについては、現時点では変更可能・不可能という違いだけ把握しておいていただければよいと思います。


まとめ

・「タプル」は、リストと同様に複数の要素を1つのデータとして扱うことが出来る。
・リストと異なりタプルはイミュータブル(あとから要素の追加/削除/変更などが出来ない)。
・タプルの作成の一番基本的な方法は、カンマ区切りの複数の要素を () で囲む。
・組み込み関数の tuple() でも作成できる。


確認問題

1.以下の要素でタプルを作成してみましょう。
・”Hello” “World”
・1 2 3 4 5 6 7 8 9 10
・”月火水木金土日” (1文字ずつに分解する)

  • このエントリーをはてなブックマークに追加

PAGE TOP