Pythonのタプルの要素を取得・アクセスする方法(index() / スライス)
生徒
「Pythonのタプルって習ったんですが、中身の取り出し方がよくわからなくて…。どうやってアクセスするんですか?」
先生
「いい質問ですね。タプルの中の値を取り出すには、いくつかの方法がありますよ。今回はindex()メソッドとスライスというやり方を学んでみましょう。」
生徒
「なんだか難しそうに聞こえます…」
先生
「大丈夫です!タプルの要素にアクセスするのは簡単ですよ。一緒に基本からやっていきましょう。」
1. タプルの要素を取り出す基本:インデックス
Python(パイソン)のタプルは、複数の値をひとまとめにして扱えるデータ型です。要素を取り出すには、インデックスという番号を使います。これは、左から0番、1番、2番…と数えていく番号のことです。
fruits = ("りんご", "バナナ", "みかん")
print(fruits[0])
print(fruits[1])
りんご
バナナ
[0]と書けば1番目の要素、[1]と書けば2番目の要素を取り出すことができます。これが最も基本的な「アクセス方法」です。
2. index()メソッドで要素の位置を調べる
index()メソッドは、タプルの中から「特定の値がどこにあるか(何番目か)」を調べる方法です。検索(けんさく)に似た操作です。
fruits = ("りんご", "バナナ", "みかん", "バナナ")
print(fruits.index("バナナ"))
1
このように、最初に見つかった「バナナ」の場所(1番目)が出てきます。
※Pythonでは0から数えるので、1番目=インデックス1になります。
もしタプルの中にその値がない場合は、エラーになります。だから、心配なときは先にinを使って調べてからindex()を使うと安心です。
if "ぶどう" in fruits:
print(fruits.index("ぶどう"))
else:
print("その果物は見つかりませんでした。")
その果物は見つかりませんでした。
3. スライスで一部分を取り出す
Pythonでは、スライスという機能を使って、タプルの中から「まとめて」複数の要素を取り出すことができます。
fruits = ("りんご", "バナナ", "みかん", "ぶどう", "パイナップル")
print(fruits[1:4])
('バナナ', 'みかん', 'ぶどう')
これは、1番目(バナナ)から4番目の1つ手前(ぶどう)までを取り出しています。
スライスの書き方は [開始番号:終了番号]。終了番号は含まれないので注意しましょう。
4. スライスの省略テクニック
スライスでは、開始番号や終了番号を省略することができます。
fruits[:3]→ 最初から3番目まで(0〜2)fruits[2:]→ 2番目から最後までfruits[:]→ 全部(コピーと同じ)
print(fruits[:3])
print(fruits[2:])
('りんご', 'バナナ', 'みかん')
('みかん', 'ぶどう', 'パイナップル')
とても柔軟に使えるので、Pythonでデータを扱うときに役立ちます。
5. マイナスのインデックスも使える
Pythonでは、後ろから数える方法としてマイナスの数字も使えます。
print(fruits[-1]) # 最後の要素
print(fruits[-2]) # 最後から2番目
パイナップル
ぶどう
タプルの長さがわからなくても、後ろから取りたいときに便利な書き方です。
6. index()の注意点とスライスとの違い
index()は「値から場所」を探す方法ですが、スライスは「番号から値」をまとめて取り出す方法です。
また、index()は「1つの値しか探せない」ですが、スライスは「範囲」で複数の要素を一度に取得できます。
使い分けとしては以下のようにすると良いでしょう。
- 「何番目にあるか知りたい」 →
index() - 「いくつかまとめて取り出したい」 →
スライス
7. タプルの中にタプルがある場合
タプルの中にまた別のタプルが入っていることもあります。こういったネスト構造(入れ子)では、二重のインデックスでアクセスします。
data = (("東京", 100), ("大阪", 80), ("名古屋", 60))
print(data[1][0])
大阪
data[1]で2番目のタプル、さらに[0]でその中の「大阪」を取り出しています。
8. スライスは元のタプルを壊さない
タプルは「変更できない(不変)」性質があるため、スライスで取り出した結果も新しいタプルとして作られます。
print(fruits)
part = fruits[1:4]
print(part)
('りんご', 'バナナ', 'みかん', 'ぶどう', 'パイナップル')
('バナナ', 'みかん', 'ぶどう')
元のタプルはそのまま残るので、安心してスライスを使えます。