本ページはプロモーションが含まれています

【Python】主な組み込み型のミュータブル、イミュータブル、イテラブル

Python組込み型

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

スポンサーリンク

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

※スマホでの表示は見辛いかもしれません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で使われるデータ型の特徴についてチートシート形式でまとめました。少しでも整理できていれば幸いです。

参考書籍

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

シェアする
ひびきをフォローする
Hbk project

コメント

  1. […] リストや辞書等のミュータブル(可変)な型 → keyとして使用不可 […]

  2. […] random.choice() は、シーケンス型データ(リスト、タプル、文字列、range) からランダムに要素を1つ抽出します。使い方は下記のとおりです。 […]

  3. […] random.shuffle() は、リストの要素をランダムにシャッフルする関数です。下記の通り、シャッフルしたいミュータブルなシーケンス型 (リスト)を引数xに設定します。 […]