Pythonのタプルって何?~変更できないリストのような便利なデータ型~

1. はじめに

Pythonでデータを扱うときに、よく出てくる「リスト」と似たデータ型に「タプル」をよく見かけます。

タプルは、リストとほとんど似ていますが、一度作ったら中身を変えられない「不変(immutable)」な特徴があります。ここでは、タプルの基本や使い方、メリット・注意点について、説明してゆきます。

いいですね~「イミュータブル」。響きがよい。Rustみたいですね。イミュータブル。文系としては会社で使ってゆきたいワードですね。

2. タプルとは?

タプルは、複数の値をひとまとめにするための箱のようなもの。 - リストは自由に中身を変えられるけれど、タプルは一度決めたら中身が変わらない - そのため、間違ってデータが変わってしまう心配がない

例えば、関数から複数の結果を返すときや、変えてはいけない設定値を保存するのに便利。

3. タプルの作り方

タプルは、基本的に小括弧「()」の中に値をカンマで区切る。

# 例:複数の要素を持つタプル
fruits = ("apple", "banana", "cherry")
print(fruits)  # 結果: ('apple', 'banana', 'cherry')

また、括弧を省略して書くこともできる?みたいです。

# 括弧なしでもタプルになる
numbers = 1, 2, 3, 4, 5
print(numbers)  # 結果: (1, 2, 3, 4, 5)
注意点
  • 要素が1つだけのタプルを作るときは、後ろにカンマ「,」を必ず付く
single = ("only",)   # これはタプル
not_tuple = ("only") # これは単なる文字列

4. タプルの基本操作

4.1 要素の取り出し

タプルは順番が決まっているので、インデックス番号を使って値にアクセスできるとのこと。 (インデックスは0から始まります)

t = ("apple", "banana", "cherry", "date")
print(t[0])   # 結果: apple
print(t[-1])  # 結果: date(-1は最後の要素)

4.2 スライスで部分を取り出す

スライスを使えば、タプルの中の一部を新しいタプルとして取り出せる。

# インデックス1から3まで(3は含まれない)
sub_t = t[1:3]
print(sub_t)  # 結果: ('banana', 'cherry')

4.3 タプルの結合と繰り返し

タプルは「+」で結合、「*」で繰り返しができる。

t1 = (1, 2, 3)
t2 = (4, 5, 6)
combined = t1 + t2
print(combined)  # 結果: (1, 2, 3, 4, 5, 6)

# 繰り返し
repeated = t1 * 3
print(repeated)  # 結果: (1, 2, 3, 1, 2, 3, 1, 2, 3)

5. タプルのアンパッキング

タプルにまとめた値を、複数の変数に一度に代入する「アンパッキング」ができる。 これは、メソッドの戻り値が複数ある場合などにとても便利です。

# タプルのパッキング(まとめる)
person = "Kunio", 40, "Engineer"

# アンパッキング(分解して変数に代入)
name, age, job = person
print(name)  # 結果: Kunio
print(age)   # 結果: 40
print(job)   # 結果: Engineer

さらに、collectionsモジュールのnamedtupleを使うと、タプルの各要素に名前を付けられるので、読みやすくなった。

from collections import namedtuple
Person = namedtuple("Person", ["name", "age", "job"])
p = Person("Bob", 28, "Designer")
print(p.name)  # 結果: Bob

#6. タプルの使いどころと注意点

使いどころ - 一度決まったら変更しないデータを扱うとき(設定値や定数など) - 関数の戻り値として複数の値を返すとき( Kunioはこれを使いそう ) - 辞書のキーとして使う(リストは使えません)

注意点 ・タプルは作った後で要素を変更できないため、もし後で値を追加・削除したい場合はリストを使うことになるかな。

7. まとめ

Pythonのタプルは、リストととても似ていますが「不変」であるため、データが間違って変更される心配がなく、信頼性の高いデータの保持に適しているので、いいですね!Rustっぽいのがかっこよい!!! - タプルは簡単で、小括弧とカンマで囲むだけ。 - インデックスやスライスで簡単にアクセスでき、結合や繰り返しも可能。 - アンパッキングで複数の変数に一気に値を取り出すことができ、namedtupleを使えばより分かりやすくなる!

これらの基本を理解すれば、タプルの利点を生かして、読みやすく安全なコードが書けるようになるでしょう。初心者はまず、実際にコードを書いて動かしてみることをおすすめします。タプルの「変えられない」性質は、思わぬバグを防ぐ大切なポイントかな。。。って思ったり。。

以上、Pythonのタプルについての解説でした。自分の会社のプロジェクトでタプルを活用し、シンプルでミスの少ないコードを目指してゆきたいものですね。。。

引き続きよろしくお願いいたします。

※以下、広告です。これを使って操作しています。