【Python入門】tupleの一歩進んだ使い方

今回はPythonでのタプルの進んだ使い方について解説していきます。

この記事では、

・タプルとは
・タプルとリストの変換方法

という基本的な内容から、

・タプルをソートする方法
・タプルを部分的に取得する方法
・名前付きタプル(namedtuple)の使い方

というやや発展的な内容まで、解説をしていきます。

なお、Pythonの記事については、こちらにまとめています。

目次

タプルとは

まずはタプルとは何かについて知っておきましょう。

タプルは、リストと同じように複数の値を持つことが出来るデータ構造です。

ただ、イミュータブルな型(あとから変更ができないという意味です)であり、リストで出来たこと(要素の追加、削除)が出来ないという特徴もあります。

このことから、変更をしたくないような変数の定義にもタプルは使われます。

これから解説していくタプルについての基礎知識については、こちらの記事をご覧ください。

タプルとリストの変換方法

ここで、よく使われるタプルリスト変換方法についておさらいしておきましょう。

タプルからリストの変換にはlist関数が使われます。

tp = (1, 2, 3, 4, 5)
print(list(tp))

実行結果

[1, 2, 3, 4, 5]

また、リストからタプルの変換にはtuple関数が使われます。

list = [1, 2, 3, 4, 5] 
tuple(list)

実行結果

(1, 2, 3, 4, 5)

どちらも覚えやすく簡単ですね。

タプルをソートする方法

タプルの要素はソート(並び替え)することも出来ます。

こちらのコードをご覧ください。

tp = (1, 9, 3, 7, 5, 8)
ntp = sorted(tp)
tuple(ntp)
print(ntp)

実行結果

(1, 3, 5, 7, 8, 9)

こちらのコードではsorted関数を使ってソートをしています。

タプルはイミュータブルな型なので厳密に言えばソートは出来ません

なので、一度リスト型になったデータをtuple関数でタプルに変換をしています。

タプルを部分的に取得する方法

タプルの一部分を取得するには、スライスという機能を使います。

スライスについてはこちらの記事で詳しく解説しているのでぜひご覧ください。

スライスはシーケンス型に対して使える機能なので、タプルにも使うことが出来ます。

こちらのコードをご覧ください。

tp = (1, 3, 5, 7, 8, 9)
print(tp[0:3]) # インデックスの0〜2まで
print(tp[2:]) # インデックスの2以上
(1, 3, 5) # インデックスの0〜2まで
(5, 7, 8, 9) # インデックスの2以上

タプルを部分的に使いたいという場合でもスライスを使えばより便利になりますね!

名前付きタプルの使い方

タプルには名前付きタプル(namedtuple)と呼ばれるものがあります。

この名前付きタプルは応用すればC言語の構造体のように使うことが出来ます。

こちらのコードを見てみましょう。

from collections import namedtuple

Human = namedtuple('Human', ('name','sex', 'age'))

namedtupleの第一引数がクラス名にあたり、第二引数でそのクラスの情報を定義することが出来ます。

オブジェクトの作成はこのようになります。

human1 = Human('Taro', 'man', '19')

また、クラスのようにドットを使った形でアクセスすることが出来ます。

print(human1.name)
print(human1.sex)
print(human1.age)

実行結果

Taro
man
19

このように、名前付きタプルを使えば普通のタプルを使うよりもわかりやすくデータを扱うことが出来ます。

まとめ

この記事ではタプル名前付きタプル(namedtuple)の使い方について解説してきました。

以前も解説はしましたが、より詳しい使い方がわかって頂けたかと思います。

また名前付きタプルについても、使い方を身につければとても便利な武器になります。

タプルの使い方について忘れてしまったら、ぜひまたこの記事をご覧ください。

なお、今Pythonを学習している方は以下の記事もどうぞ。

はじめてPythonを使う方でもわかりやすいように、Pythonでできることやその学習法などを中心にまとめています。

復習にも使えると思いますので、ぜひ一度ご覧になってみてくださいね。

Python 入門完全攻略ガイド

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次