[Python] データ型の特徴(ミュータブル/イミュータブル、イテラブル)

Pythonの組み込み型には数値型、シーケンス型、集合型や辞書型等あり、それぞれにミュータブル/イミュータブル、イテラブルなどの特徴があります。最初はどれがどれに対応しているか分かり難いので、表にしてひと目で分かるようにしてみました。

# 2019/2/5 微修正

データ型の特徴がひと目でわかるチートシート

※スマホでの表示は見辛いかもしれませんm()m

データ型ミュータブル
(可変)
イミュータブル
(不可変)
イテラブル
数値型int整数型
float浮動小数点型
complex複素数型
シーケンス型listリスト:[ ]
tupleタプル:( )
rangerangeオブジェクト
str文字列
集合型set集合:{ }
frozensetfrozensetオブジェクト
マッピング型dict辞書:{key:value}

<参考>

以下のデータ型の詳細については下記の記事で紹介しています。

集合型

マッピング型(辞書型)

ミュータブル 

値を追加したり削除したり変更したりすることが可能なオブジェクトです。

#リストはミュータブルなので、値を変更することが出来ます。
>>> a = ['a', 'b', 'c', 'd']
>>> a[1] = 'x'
>>> a
['a', 'x', 'c', 'd']

尚、ミュータブルなオブジェクトはハッシュ不可能なので、辞書のkeyには使えません。

イミュータブル

変更不可能なオブジェクトです。数値を代入しようとするとTypeErrorとなります。
変更するには、新しいオブジェクトを作成する必要があります。

#文字列はイミュータブルなオブジェクトなので、変更しようとするとエラーが発生。
>>> s = 'abcd'
>>> s[1] = 'x'
Traceback (most recent call last):
  File "", line 1, in 
TypeError: 'str' object does not support item assignment

#変更する際は、新しいオブジェクトを作ります。
>>> new_s = s[:1] + 'x' + s[2:]
>>> new_s
'axcd'

イミュータブルなオブジェクトはハッシュ可能なので、辞書のkeyになりえます。

イテラブル

要素を1回に1つずつ返す機能をもったオブジェクトで、以下が該当します。

  • 全てのシーケンス型(リスト、タプル、文字列)
  • 非シーケンス型(辞書、ファイルオブジェクト)
  • __iter__()を持つオブジェクト
  • __getitem__()を持つオブジェクト

難しい表現ですが、イメージ的にはfor文でループを回せるオブジェクトのことだと思います。

詳細はこちらの記事にてまとめています。ご参照ください。

まとめ

Pythonで使われるデータ型の特徴についてチートシート形式でまとめました。少しでも整理できていれば幸いです。

Learn more...

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


One Reply to “[Python] データ型の特徴(ミュータブル/イミュータブル、イテラブル)”

コメントは受け付けていません。