Pythonは動的型付け言語であり、変数を宣言する際に型を明示する必要はありません。しかし、変数が保持するデータには明確な「型(Type)」が存在します。
データ型は、そのデータがどのような種類(整数、文字列、リストなど)であるかを定義し、どのような操作が可能かを決定します。
この記事では、Pythonの主要なデータ型と、それらを理解する上で重要な「ミュータブル(変更可能)/イミュータブル(変更不可能)」および「イテラブル(反復可能)」という性質について解説します。
Pythonの主要なデータ型
Pythonのデータ型は、大きく「単一の値を持つ型」と「複数の値を持つコレクション型」に分類できます。
1. 単一の値を持つ型
int(整数型): 正負の整数を扱います。user_count = 150temperature = -5float(浮動小数点数型): 小数点を持ちます。rate = 0.05pi_value = 3.14159bool(ブール型):True(真) またはFalse(偽) のどちらかの値を持ちます。is_active = Trueis_empty = FalseNoneType(None型): 「値が存在しない」ことを示す特別な型です。Noneという値のみを持ちます。result = None
2. 複数の値を持つ型(コレクション)
複数のデータをまとめて扱うための型です。
str(文字列型): 文字のシーケンス(並び)。順序があり、"や'で囲みます。app_title = "Admin Panel"error_message = 'File not found.'list(リスト型): 順序付けられた値のコレクション。[]で囲み、値はカンマで区切ります。scores = [88, 92, 75, 100]items = ["Apple", 150, True]tuple(タプル型): 順序付けられた値のコレクション。()で囲みます。リストと似ていますが、一度作成すると中身を変更できない(イミュータブル)という特徴があります。db_config = ("localhost", 5432, "admin")dict(辞書型): キーと値のペアを格納するコレクション。{}で囲み、キー: 値の形式で指定します。順序(Python 3.7以降では挿入順)を持ちます。user_profile = {"id": "A001", "age": 45, "name": "Sato"}set(セット型): 順序を持たず、重複する値を含まないコレクション。{}で囲みます(辞書と似ていますがキーがありません)。unique_tags = {"python", "dev", "web", "python"}# unique_tags の内容は {"python", "dev", "web"} となる
変数の重要な性質
データ型を扱う上で、以下の2つの性質を理解することは非常に重要です。
1. ミュータブル (Mutable) vs イミュータブル (Immutable)
この分類は、データ(オブジェクト)が作成された後に変更可能かどうかを示します。
イミュータブル (変更不可能) な型
一度作成されると、そのオブジェクト自体の内容を変更できません。 主な型: int, float, bool, str, tuple
# 文字列 (str) の例
app_name = "MyApp"
# app_name の内容を変更しているように見えるが...
app_name = "NewApp"
# ...実際は "NewApp" という新しい文字列オブジェクトが作成され、
# app_name がそれを指すように変わっただけ。
# タプル (tuple) の例
coordinates = (10, 20)
# coordinates[0] = 5 # TypeError: 'tuple' object does not support item assignment
ミュータブル (変更可能) な型
作成された後でも、そのオブジェクト自体の内容を変更できます。 主な型: list, dict, set
# リスト (list) の例
active_users = ["Tanaka", "Suzuki"]
print(f"変更前: {active_users}")
# active_users というオブジェクト自体に変更を加える
active_users.append("Kato")
print(f"変更後: {active_users}")
# 辞書 (dict) の例
settings = {"theme": "dark"}
print(f"変更前: {settings}")
# settings というオブジェクト自体にキーと値を追加
settings["font_size"] = 16
print(f"変更後: {settings}")
実行結果:
変更前: ['Tanaka', 'Suzuki']
変更後: ['Tanaka', 'Suzuki', 'Kato']
変更前: {'theme': 'dark'}
変更後: {'theme': 'dark', 'font_size': 16}
2. イテラブル (Iterable)
「イテラブル(反復可能)」とは、for ループなどでその要素を一つずつ順番に取り出すことができるオブジェクトのことです。
Pythonのコレクション型(list, tuple, str, dict, set)は、すべてイテラブルです。
# リスト (イテラブル) の例
user_roles = ["admin", "editor", "guest"]
print("--- ユーザーロール ---")
for role in user_roles:
print(role)
# 文字列 (イテラブル) の例
app_version = "1.5.0"
print("--- バージョン詳細 ---")
for char in app_version:
print(char)
# 辞書 (イテラブル) の例
# デフォルトではキーが反復処理される
user_scores = {"tanaka": 80, "suzuki": 95}
print("--- ユーザースコア (キー) ---")
for user in user_scores:
print(user)
# .items() を使ってキーと値を同時に取得
print("--- ユーザースコア (キーと値) ---")
for user, score in user_scores.items():
print(f"{user}: {score}")
実行結果:
--- ユーザーロール ---
admin
editor
guest
--- バージョン詳細 ---
1
.
5
.
0
--- ユーザースコア (キー) ---
tanaka
suzuki
--- ユーザースコア (キーと値) ---
tanaka: 80
suzuki: 95
まとめ
Pythonの変数は、int や str といった基本的な型から、list や dict といった強力なコレクション型まで、様々な種類のデータを扱うことができます。
list,dictはミュータブル(変更可能)であり、オブジェクト自体を変更できます。str,tupleはイミュータブル(変更不可能)であり、一度作成すると変更できません。forループで要素を一つずつ取り出せるオブジェクト(list,str,dictなど)はイテラブルです。
これらのデータ型とその性質を理解することで、Pythonの機能をより効果的に活用できます。
