【Python入門】タプルの基本操作(追加・結合/取り出し/検索など)について解説
Pythonでは、リスト(list)とよく似たデータ型として「タプル(tuple)」があります。
タプルとリストとではできる事が若干異なっており、それぞれで適切な使用場面があります。
この記事では、タプルを扱う上での基本的な使い方(追加・結合/取り出し/検索など)について解説していきます。
タプル(tuple型)の定義については、以下の記事でくわしく説明しています。
タプル内の要素を参照する
タプル内の要素を確認する場合は、タプル[]の形で記述します。
[]の中に参照したい要素の番号や範囲を指定することで、任意の値が取得可能です。
要素の番号で指定
前から数える場合は0始まり、後ろから数える場合は-1始まりとして、要素の番号を[]内に記述します。
tp = ("テスト", 123, False) # tpという変数に、タプルを保持
print(tp[0]) # tp(タプル型)の、0番目(前から1つ目)の要素を表示
print(tp[-1]) # tp(タプル型)の、最後尾(後ろから1つ目)の要素を表示
= 実行結果 =
テスト
False
要素の範囲を指定(スライス機能)
範囲を使って要素を指定する場合は、スライス機能を使用します。
スライス機能の記述方法は、以下の通りです。
開始番号における指定は「~以上(範囲に含まれる)」、終了番号における指定は「~未満(範囲に含まれない)」になります。
特に、マイナスの番号を指定する際はややこしくなりがちなので、扱いには十分注意するようにしましょう。
tp = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) # tpという変数に、タプルを保持
print(tp[2:5]) # 番号が2以上5未満(2~4)の要素を表示
print(tp[-4:-1]) # 番号が-4以上-1未満(-2~-4)の要素を表示
print(tp[1:9:2]) # 番号が1以上9未満(1~8)の要素を、2つ刻みで表示
= 実行結果 =
(3, 4, 5)
(7, 8, 9)
(2, 4, 6, 8)
タプルを編集する
タプル(tuple)はデータ型の性質上、基本的に要素の追加や削除といった編集ができません。
ただし別の操作を行うことで、一部で似たような振る舞いをさせることは可能です。
要素を追加する(タプルの結合)
タプルに新たな要素を追加したい場合、別のタプルを結合させるといった形で要素同士をまとめることができます。
結合する際は、「タプル(変数) += 追加したいタプル(変数)」の形で記述します。
tp = ("テスト", 123, False) # tpという変数に、タプルを保持
tp += ("test", 3.14) # tp(タプル)に新たなタプルを結合
print(tp) # tpの中身を表示
= 実行結果 =
('テスト', 123, False, 'test', 3.14)
要素を削除する(取り出し)
タプルから要素を削除したい場合は、必要な要素のみを取り出したタプルに置き換える操作で代用します。
上で説明したスライス機能を活用することで、指定された範囲の要素の取り出しが可能です。
tp = ("テスト", 123, False, "test", 3.14) # tpという変数に、タプルを保持
tp = tp[:-1] # tp(タプル)を、番号が-1未満(末尾以外)の要素を取り出したタプルに置き換える
print(tp) # tpの中身を表示
= 実行結果 =
('テスト', 123, False, 'test')
なお、タプルでの編集はもともと想定されていないため、スライス機能を用いるにしても操作に限界があります。
どうしても要素の削除を行いたい場合は、リスト型に変換してからの操作がおすすめです。
要素を並び替える(ソート)
タプル内にある要素を並び替える場合は、sorted()
関数を使用します。
「タプル = sorted(タプル)」の形で記述すると、中の要素を昇順(0⇒9、a⇒z、あ⇒ん)に並び替えたタプルに置き換えることができます。
ただし、sorted()
が使えるのはタプル内のデータ型が同一の場合のみです。
tp = ("apple", "あんこ", "1", "2", "banana", "いろ") # tpという変数に、タプルを保持
tp = sorted(tp) # tpを、要素を昇順に並び替えた結果に置き換える
print(tp) # tpの中身を表示
tp = ("apple", "cat", 1, 2, "banana", 3) # tpの中身の要素を変更(数値と文字列が混合)
tp = sorted(tp) # この場合はエラーが発生
= 実行結果 =
['1', '2', 'apple', 'banana', 'あんこ', 'いろ']
Traceback (most recent call last):
File "sample.py", line 9, in <module>
tp = sorted(tp)
TypeError: '<' not supported between instances of 'int' and 'str'
なお、sorted()
では並び替えた結果をリスト型で返します。
ソート後もタプル型として扱いたい場合は、tuple()
関数での再変換が必要です。
tp = ["apple", "あんこ", "1", "2", "banana", "いろ"] # tpという変数に、リストを保持
tp = tuple(tp) # tuple()にて、tp(リスト)をタプル型に変換
print(tp) # tpの中身を表示
= 実行結果 =
('1', '2', 'apple', 'banana', 'あんこ', 'いろ')
要素を降順 (9⇒0、z⇒a、ん⇒あ)や逆順にソートする方法は、別記事にて説明しています。
タプル内の要素を検索する
要素数が膨大になってくると、内部の状況が把握しきれなくなる場合もあります。
この先では、タプル内の要素から必要な情報を検索する方法について紹介します。
指定の要素が含まれているかを確認
特定の要素があるかどうかを確認する場合は、in
演算子を使用します。
使用する際は「要素 in タプル」を記述することで、要素が存在するかどうかを真偽値(TrueまたはFalse)で返します。
tp = ("テスト", 123, False) # tpという変数に、タプルを保持
print(123 in tp) # tp(タプル)に「123」があるかどうかを表示
print("test" in tp) # tpに「test」があるかどうかを表示
= 実行結果 =
True
False
指定の要素の番号を確認
特定の要素の番号を確認したい場合は、index()
メソッドを使用します。
使用する際は、検索したいタプル(変数)の後に「.index(要素)」の形で記述することで、対象の番号を取得できます。
なお、index()
で指定する要素がタプル内に複数存在する場合、取得できるのは一番最初にある要素の番号のみになるので注意してください。
tp = ("テスト", 123, False, "テスト", 3.14, "テスト") # tpという変数に、タプルを保持
print(tp.index(3.14)) # tp(タプル)から「3.14」を検索して表示
print(tp.index("テスト")) # tpから「テスト」を検索して表示(最初の要素の番号のみ)
= 実行結果 =
4
0
指定の要素がいくつ含まれるかを確認
タプル内に要素がいくつ存在するかを確認したい場合は、count()
メソッドを使用します。
使用する際は、検索したいタプル(変数)の後に「.count(要素)」の形で記述することで、指定した要素の個数を取得できます。
tp = ("テスト", 123, False, "テスト", 3.14, "テスト") # tpという変数に、タプルを保持
print(tp.count("テスト")) # tp(タプル)内にある「テスト」の個数を表示
= 実行結果 =
3
まとめ
この記事では、タプルを扱う上での基本的な使い方(追加・結合/取り出し/検索など)について解説しました。
タプル型では操作に制限がありますが、使いどころをきちんと押さえておけば、より円滑にプログラム開発を進めることができます。
いざという時に扱いに困らないよう、しっかり基礎を押さえておくようにしましょう。