• タプル(tuple)

    タプルは、リストと同じように、複数のデータを順番に格納するために使われます。

    使い方もリストとほとんど同じですが、タプルは、一度設定したデータを変えることができないという特徴があります。

    つまり、一度定義したら、後から変更したくないデータを入れる時はタプルを使うと良いでしょう。

    タプルの作り方

    タプルは、データをかっこ()(英語ではparenthesisと言います)で囲むことで作ることができます。それぞれのデータはコンマで区切ります。

    また、タプルには、リストと同じく、整数、浮動小数点数文字列などのデータを入れることができます。

    なお、()はオプションで、()をつけなくてもPythonはタプルと認識してくれるのですが、予想をしない動きをすることもあるので、タプルを定義する時はかならず()をつけるようにしましょう。

    実際に、いくつかタプルを作ってみます。

    コード
    

    list = (1)

    list = (1, 2, 3)

    list = (1, 10.15, 'apple')

    更に、タプルは入れ子の構造にすることもできます。実際に入れ子になっているタプルを見てみましょう。

    コード
    

    list = (1, (2, ), ('orange', ), (1, 2, 3))

    データが一つの場合、コンマをつけなければいけない

    タプルは、データが一つの場合はコンマをつけて、タプルであることをPythonに認識させる必要があります。

    つまり、Pythonがタプルかどうかを判断する条件は、()ではなく、コンマがあるかどうかなのです。

    具体的な例で見ていきましょう。

    コード
    

    number = (1, 2)

    print(number)

    print(type(number))

    アウトプット
    

    (1,2)

    <class 'tuple'>

    このコードでは、2つのデータがコンマで区切られていますので、タプルとして認識されました。

    コード
    

    number = (1 + 2)

    print(number)

    print(type(number))

    アウトプット
    

    3

    <class 'int'>

    このコードでは、1+2の結果である3numberに代入されていますが、3のあとにコンマがないので整数として認識されています。

    コード
    

    number = ('number')

    print(number)

    print(type(number))

    アウトプット
    

    number

    <class 'srt'>

    このコードでも、中に入っているデータが'number'と一つだけあり、コンマがついていないので文字列として認識されています。

    タプルからデータを取り出したい場合

    次に、タプルからデータを取り出す方法を見ていきましょう。

    タプルからデータを取り出すには、リストと同じく[]を使います。

    具体例で確認していきましょう。

    コード
    

    tuple = ('apple', 'orange', 'grape', 'kiwi')

    print(tuple[0])

    アウトプット
    

    apple

    tuple[0]という形で、番号を使ってタプルの中のデータを取り出すことができました。

    また、タプルに入っているデータ以上の数字を取り出そうとすると、エラーが出てしまうのもリストと同じです。

    コード
    

    print(tuple[100])

    アウトプット
    

    IndexError: tuple index out of range

    index(番号)がタプルの範囲外ですよ。というエラーが表示れてしまいました。

    また、インデックスの指定は必ず整数でなければいけません。これもリストと同じです。

    入れ子になっているリストで、データを指定する方法

    次に、入れ子になっているリストでデータを指定する方法について見ていきましょう。

    入れ子になっているリストでデータを指定する方法もリストと同じく、[]を2回使います。これも具体例を見た方がイメージが湧きやすいと思いますので、具体例で見ていきましょう。

    tuple = (1, 2, 3, (10, 11, 12))

    print(tuple[3][0])

    10

    タプルのスライス

    ここでは、タプルのスライスについてお伝えします。

    タプルのスライスも、リストと同じように扱うことができます。

    具体例で見ていきましょう

    tuple = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

    print(tuple[5:])

    (5, 6, 7, 8, 9, 10)

    タプル内の要素の変更

    タプルは中身を変えることができませんので、変えようとするとエラーが出ます。

    tuple = (1, 2, 3, ['dog', 'pig'])

    tuple[0] = 2

    TypeError: 'tuple' object does not support item assignment

    タプル型には、要素の割当をすることはできません。というエラーが出てしまいました。

    タプルは、一度データを作ると後から変えることはできません。tuple[0]に2という新しいデータを割り当てようとしたため、エラーが出てしまったのです。

    しかし、要素自体が変更可能である場合、要素を変えることができます。

    以下のコードでは、['dog', 'pig']はリストですので、中身を変えることができます。

    tuple = (1, 2, 3, ['dog', 'pig'])

    tuple[3][0] = ['cat']

    print(tuple)

    (1, 2, 3, ['cat', 'pig']

    なお、ミュータブルとイミュータブルの詳しい解説については、ミュータブルといミュータブルという記事に詳しくまとめていますので、深く理解したい方はぜひ読んでみて下さい。

    タプルのまとめ

    (1) リストと同じように使うことができる。

    (2) 違いは、データを更新することができるか。タプルは一度設定したデータを変えることはできない。

    タプルを学んだ後は

    タプルを学んだ後は、タプルに似たデータである集合について学びましょう。