Python

【Python】タプルの使い方【tuple】

この記事では、Pythonのtuple(タプル)の使い方を解説します。タプルは、異なったデータ型の集まりを格納できるシーケンスです。しかし、要素を変更することはできません。それでは、タプルについて見ていきましょう❗️

tuple(タプル)とは?

タプルとは、異なる型の要素を任意の数だけ格納できるシーケンスです。

シーケンスとは、複数の要素が一定の順序で並んでいるオブジェクトのこと

リストと異なる点は、インスタンス化した後に要素を追加・削除・変更することができないことです。

そのような性質を「イミュータブル」と呼びます。

【Python】ミュータブルとイミュータブルこの記事では、Pythonのミュータブル(mutable)とイミュータブル(immutable)について解説します。 ミュータブルとイ...

タプルには、要素を変更するようなメソッドが定義されていないため、リストよりも軽いです。なので、リストよりもタプルを使った方がメモリを節約することができます。

一時的に要素をまとめたい場合などによく使われます。

タプルの使い方

生成

タプルは、()を使って生成します。

変数名 = ()

tuple()を使っても生成できます。

変数名 = tuple()

要素を,(カンマ)区切りで記述することで、初期値を指定できます。

変数名 = 要素1, 要素2, ..., 要素N

または

変数名 = (要素1, 要素2, ..., 要素N)

要素が1つの場合は、以下のように初期化できます。

変数名 = 要素,
タプルを作るのはカンマであり、丸括弧ではない

演算

タプルはシーケンスなので、シーケンス演算が使用可能です。

# タプル生成
t = 1, 2, 3

# インデックスから要素取得
print(t[1])

# スライス
print(t[1:3])

# 要素の有無
print(2 in t)

実行結果

2
(2, 3)
True
【Python】シーケンスとは?この記事では、Pythonのシーケンス(sequence)について解説します。シーケンスとは、文字列やリストのような順番を持った複数の要...

使う場面

よく使われる場面としては、関数の戻り値で複数の値を返したい時に使われます。

def func():
    # カンマ区切りで返す
    return 1, 2, 3

val = func()
print(val)

# バラバラに受け取る
val1, val2, val3 = func()
print(val1, val2, val3)

実行結果

(1, 2, 3)
1 2 3

消費メモリを比べる

タプルはリストよりも軽いと言っていますが、どの程度なのか調べてみましょう。オブジェクトの__sizeof__メソッドを呼び出すことでサイズを確認できます。

l = [1, 2, 3]
print(l.__sizeof__())

t = 1, 2, 3
print(t.__sizeof__())

実行結果

104
48

まさかの半分以下でした❗️

変更が必要ない時は、タプルを使うように心がけましょう。

【Python】オブジェクトのサイズ(メモリ消費量)を確認するこの記事では、Pythonでオブジェクトのメモリ消費量を確認する方法を解説します。 オブジェクトのサイズを確認する方法 オブジェクト...

余談: tupleは変更できない…?

タプルは要素の追加や削除はできません。しかし、タプル同士を連結させることで、新たなタプルを生成することはできます。

以下の例を見てください。

t1 = 1, 2, 3
t2 = 4, 5

t = t1 + t2

print(t)
# (1, 2, 3, 4, 5)

t1とt2を連結させたtを生成できました。また、一時的にリストに変換することで他の処理も可能です。

t = 1, 2, 3

# リストに変換
l_t = list(t)


# 要素の追加
l_t.append(4)

print(l_t)
# [1, 2, 3, 4]


# 要素の削除
l_t.remove(1)

print(l_t)
# [2, 3, 4]


# タプルに変換
t = tuple(l_t)
print(t)
# (2, 3, 4)

このようにリストに変換することで、要素を変更できます。

まとめ

この記事では、Pythonのtuple(タプル)の使い方を解説しました。

コンテナオブジェクトを使う場合、汎用性の高いリストを使うことが多いですが、変更が必要ない場合は、タプルを使った方がメモリを節約することができます。

それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ

最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』