21.タプル

リストと同じようなデータとしてタプル型というものがあります。

pythonでは

()
丸括弧

で定義することができます。

リストとの大きな違いは
値の追加や変更ができないという点です。

一度、変数を作ったら
その変数の中の要素を変更したり付け足したり
削除したりすることができないリスト だと思ってください。

なので、用途としては
変わることのないものを格納しておく、
というような使い方になります。

In [1]:
# 5つの要素をもったタプルを定義
a = (1,2,3,4,5)
print(a)
(1, 2, 3, 4, 5)
In [2]:
# 要素を持たないタプルも定義できるが意味がない
b=()
print(b)
()

要素の取り出しについてはリストと同じく
インデックスとスライス機能を使ったりすることができます。

In [3]:
# タプルの3番目の要素を取り出す
a = (1,2,3,4,5)
print(a[2])
3
In [4]:
# タプルの2-4番目の要素を取り出す
a = (1,2,3,4,5)
print(a[1:4])
(2, 3, 4)

要素の追加、削除、変更はできません。

In [5]:
# タプルの要素の追加
c = (1,3,5,7,9)

c.append(11)
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-5-62fd258abb69> in <module>()
      2 c = (1,3,5,7,9)
      3 
----> 4 c.append(11)

AttributeError: 'tuple' object has no attribute 'append'
In [6]:
# タプルの削除
d = (1,3,5,7,9)

del d[2]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-6-fb54d548927f> in <module>()
      2 d = (1,3,5,7,9)
      3 
----> 4 del d[2]

TypeError: 'tuple' object doesn't support item deletion
In [7]:
# タプルの要素の変更
e =(2,3,4,5,6)
e[3]=13
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-7-56560fbbf80f> in <module>()
      1 # タプルの要素の変更
      2 e =(2,3,4,5,6)
----> 3 e[3]=13

TypeError: 'tuple' object does not support item assignment

タプルの要素に手を加えようとするとエラーが発生します。

ただし、タプルとタプルを組み合わせて要素の追加のようなことはできます。

In [8]:
t1 = (1,2,3,4,5)
t2 = (2,3,4,5,6)
t3 = t1 + t2
print(t3)
(1, 2, 3, 4, 5, 2, 3, 4, 5, 6)

このように
一度作ってしまえば要素は変わらないような使いみちであれば
間違って書き換える心配のないタプルが適しています。

タプルという形のデータもあるんだよ、ということを
押さえていただければと思います。