LoginSignup
1
2

More than 3 years have passed since last update.

[Python]04章-05 いろいろなデータ構造(タプルの作成と特徴)

Last updated at Posted at 2020-05-31

[Python]04章-05 タプルの作成

ここでは、リストではなく、タプルというデータ構造について触れていきたいと思います。
リストと似ていますが、タプルとリストを比較してみていきたいと思います。

タプルの作成

早速、タプルを作成していきたいと思います。今回もPython Consoleから操作していきます。
Python Consoleに以下のコードを入力してください。今回の要素は文字列で説明していきたいと思います。

>>> T= ('茨城県', '栃木県', '群馬県', '埼玉県', '東京都', '千葉県', '神奈川県') 
>>> T
('茨城県', '栃木県', '群馬県', '埼玉県', '東京都', '千葉県', '神奈川県')

上記のコードを入力してわかる通り、タプルは[ ]ではなく、( )を使って作成します。

以下のように、タプル内の各要素を取り出したり、len関数で要素の長さを求めることは可能です。ここまではリストと同じであることは確認できます。

>>> T[2]
'群馬県'
>>> T[1:3]
('栃木県', '群馬県')
>>> len(T)
7

なお、タプルを囲むための( )は省略もできます。

>>> tp = 10, 20, 30
>>> tp
(10, 20, 30)

1つの要素から成り立つタプルを作成したいときには、最後に,(カンマ)を入力するようにしてください。そうしないと、単一の値を入力していることになるためです。

>>> tp=10,
>>> tp
(10,)

また、タプルでは、複数の変数に値を同時に代入ができます。

>>> x, y, z = (100, 200, 300)
>>> x,y,z
(100, 200, 300)
>>> x
100

複数の変数に値を代入する際には、要素の数をそろえないとエラーとなります。

タプルの特徴

では、リストとタプル何が違うのでしょうか?
Python Consoleに以下のコードを入力してください。一度変数Tの内容を表示してから実行します。

>>> T
('茨城県', '栃木県', '群馬県', '埼玉県', '東京都', '千葉県', '神奈川県')
>>> T[1]='AAA'
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

上記コードを見るとわかるように、タプルでは要素の変更ができません。
また、メソッドで値の操作もできないことを確認できます。

>>> T.clear()
Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'clear'

少し専門的な言い方をしますと、リストは要素を変えることができるので、ミュータブルなデータ構造と言い、タプルは要素の値を変えられないので、イミュータブルなデータ構造ということがあります。

では、タプルは要素の値を変えられないので、使用することはないのではないかと思われるかもしれません。
しかし、この値が変えられないということも実務上では使用することはよくあるのです。

例えば、先ほどの例では都道府県の関東地方の都県名をタプルTに代入しましたが、こういった都道府県名はまず基本的には不変となります。
(都道府県の地名が変わるという可能性は十分低い。)

これがもしリストで保管されていると、誤って都道府県名を変えてしまうことがあり得ます。そういったミスを防ぐという意味でもタプルは使われることは多いです。

最後に

今回はタプルというデータ構造を扱いましたが、リストとの違いを把握できましたでしょうか?
タプルは学んでいると使用用途が見えずらいと思いますが、要素の値を変えたくないときに利用するものだということが把握できればよいでしょう。

【目次リンク】へ戻る

1
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2