【Python】タプルの使い方の基本

タプルはPythonの組込み型の一つで、リスト(list)と異なりイミュータブル(変更不可)なデータ型です。要素をカンマ(,)で区切ることで生成できます。今回は、こんなタプルの特徴と生成方法など基本についてまとめます。

環境

  • OS: Ubuntu16.04LTS
  • Python3.7.3@Anaconda

タプル(tuple)

特徴

タプルの特徴を以下に挙げます。★部はリスト(list)と異なる特徴のところです。

  • イミュータブル(変更不可)(★)
  • 一般的に異種(★)のデータの集まりを格納するために使われる
  • 共通のシーケンス演算をすべて実装

生成方法

タプルの生成方法について以下に記載します。

  • 要素をカンマ(,)で区切る。
  • カッコ()は無くてもよい!(但しコード上、読みにくくならないように気をつけてね!(意訳)と公式には記載があります)

    # 要素をカンマ(,)で区切る
    >>> a = 1, 2, 3
    >>> type(a)
    <class 'tuple'>
    
    # カッコで囲んだ場合
    >>> a = (1, 2, 3)
    <class 'tuple'>

    但し、空のタプルの場合はカッコ()は必要。

    >>> a = ()
    >>> type(a)
    <class 'tuple'>

    単要素(一つしか要素が無い)場合は、最後にカンマ(,)を忘れずに!

    # 単要素は最後にカンマ(,)を付ける
    >>> a = 1,
    >>> type(a)
    <class 'tuple'>
    
    # カッコで囲んだ場合
    >>> a = (1,)
    >>> type(a)
    <class 'tuple'>

    ちなみにカンマ(,)が無いとタプルじゃなくなります(そらそうですね)

    >>> a = 1
    >>> type(a)
    <class 'int'>
    
    # カッコが合ってもだめ
    >>> a = (1)
    >>> type(a)
    <class 'int'>
  • tuple([iterable]) を使う
  • 引数iterableは、シーケンス(リストや文字列等)等のイテラブルなオブジェクトやイテレータです。
    引数iterableの項目と同じ項目、同じ順のタプルを生成します。

    # リストをタプルに変換
    >>> a = tuple([1, 2, 3])
    >>> a
    (1, 2, 3)
    
    # 文字列をタプルに変換
    >>> s = tuple('abc')
    >>> s
    ('a', 'b', 'c')
    
    # rangeオブジェクトをタプルに変換
    >>> a = tuple(range(5))
    >>> a
    (0, 1, 2, 3, 4)

    引数を省略した場合は、空のタプルが返ります。

    >>> a = tuple()
    >>> a
    ()

    尚、数値型はイテラブルではないので、下記のようにTypeErrorになります。

    >>> a = tuple(1)
    Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
    TypeError: 'int' object is not iterable

まとめ

今回はPythonの組込み型の一つ、タプルについてその特徴と生成方法についてまとめました。

Learn more...

書籍でもう少し詳しく学びたい場合はこちらもどうぞ。筆者もかなり参考にさせてもらっています!

[Sponsor link]