Pythonタプルの操作:要素の参照(インデックス)、スライス、要素数の取得

Pythonのタプル(tuple)は、一度作成すると中身を変更できない「イミュータブル(変更不可能)」なデータ型です。

しかし、「変更」ができないだけで、リスト(list)と同様に、格納されている要素を**「参照」したり、「スライス(切り出し)」したり、「要素数」**を調べたりすることは自由に行えます。

この記事では、タプルの基本的な参照・操作方法について解説します。

目次

1. 要素数の取得 (len())

タプルにいくつの要素が格納されているか(長さ)を調べるには、リストや文字列と同じく、組み込み関数の len() を使用します。

構文:

len(タプル変数)

使用例:

# 稼働中のサービス一覧
active_services = ("httpd", "mysql", "sshd", "redis")

# len() で要素数を取得
service_count = len(active_services)

print(f"タプルの内容: {active_services}")
print(f"稼働中のサービス数: {service_count}")

実行結果:

タプルの内容: ('httpd', 'mysql', 'sshd', 'redis')
稼働中のサービス数: 4

2. 要素の参照(インデックス)

タプル内の特定の要素にアクセスするには、リストと全く同じようにインデックス(位置番号)を使います。

正のインデックス(0から始まる)

[0] が先頭、[1] が2番目の要素を指します。

# 0番目 (先頭) の要素
first_service = active_services[0]
print(f"インデックス 0: {first_service}")

実行結果:

インデックス 0: httpd

負のインデックス(-1から始まる)

[-1] が末尾、[-2] が末尾から2番目の要素を指します。

# -1番目 (末尾) の要素
last_service = active_services[-1]
print(f"インデックス -1: {last_service}")

実行結果:

インデックス -1: redis

3. 要素の切り出し(スライス)

タプルの一部をまとめて切り出し、新しいタプルとして取得する「スライス」構文も、リストと全く同じように使用できます。

構文: タプル変数[start:stop:step]

  • start は含まれ、stop含まれません(その手前まで)。
active_services = ("httpd", "mysql", "sshd", "redis", "nginx")
# インデックス:       0         1        2        3        4

# インデックス 1 ("mysql") から 3 ("redis") の手前まで
# つまり [1], [2] を切り出す
core_services = active_services[1:3]

print(f"元のタプル: {active_services}")
print(f"スライス結果: {core_services}")
print(f"スライス結果の型: {type(core_services)}")

実行結果:

元のタプル: ('httpd', 'mysql', 'sshd', 'redis', 'nginx')
スライス結果: ('mysql', 'sshd')
スライス結果の型: <class 'tuple'>

スライスで切り出した結果も、list ではなく tuple になっていることが重要です。

まとめ:タプルは「参照」のみ可能

タプル(tuple)とリスト(list)の操作性の違いを整理します。

  • できる操作(同じ):
    • len(t) (要素数の取得)
    • t[0] (インデックス参照)
    • t[-1] (負のインデックス参照)
    • t[1:3] (スライス)
    • for item in t: (ループ処理)
    • if "value" in t:in 演算子による検索)
  • できない操作(タプル特有のエラー):
    • t[0] = "new" (TypeError): 要素の変更
    • t.append("new") (AttributeError): 要素の追加
    • del t[0] (TypeError): 要素の削除

タプルは、中身を「変更」することはできませんが、中身を「読む」操作はリストと全く同じ感覚で行うことができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次