Pythonのコアデータ構造の特性
Pythonは実行時の柔軟性を実現するため、用途に応じた標準データ構造を提供しています。これらは内部実装の違いから以下のカテゴリに分類されます:
- 順序付きコレクション:要素に位置情報を持ち、インデックスでアクセス可能
- キー駆動型構造:ハッシュアルゴリズムに基づく高速検索を実現
- 順序なし集合:重複排除を保証する数学的集合の実装
各構造の詳細なメソッドはdir()関数で確認可能です。例:
# リストの操作メソッド一覧
dir(list())
# 辞書の操作メソッド一覧
dir(dict())
可変シーケンス:リスト構造
リストは動的な要素管理が可能な順序付きコレクションです。要素の追加・削除・変更が実行時に行えます。
data_collection = [3.14, "pi", True]
スライス操作の実践的利用
範囲指定による部分列の抽出では、終端インデックスは結果に含まれない点に注意が必要です:
sequence = [10, 20, 30]
# 空のスライス位置への挿入で末尾追加
sequence[3:] = [40] # 結果: [10, 20, 30, 40]
リスト内包表記の再構築
繰り返し処理を宣言的に表現する手法で、条件分岐と多重ループを組み合わせ可能です:
# 0-100の偶数を華氏に変換(小数点1桁)
fahrenheit_values = [round((c * 9/5) + 32, 1)
for c in range(0, 101)
if c % 2 == 0]
この表現は次のような処理と等価ですが、実行効率と可読性で優位です:
fahrenheit_values = []
for c in range(0, 101):
if c % 2 == 0:
fahrenheit_values.append(round((c * 9/5) + 32, 1))
複雑な処理には従来のループが適する場合もありますが、シンプルな変換処理では内包表記が推奨されます。
不変シーケンス:タプル
作成後に内容を変更できない順序付き構造で、主にデータの整合性確保に使用されます:
immutable_record = ("Tokyo", 35.68, 139.69)
要素の型が異なるデータをまとめて保持する際、誤変更防止のメリットがあります。
キー基盤構造:辞書
Python 3.7以降では挿入順を保持するハッシュマップ実装です。キーの重複は許容されません:
location_data = {
"latitude": 35.68,
"longitude": 139.69,
"city": "Tokyo"
}
辞書の順序保持特性は、APIレスポンスの処理やデータシリアライズで特に有用です。
数学的集合:セット
重複排除と集合演算に特化したデータ構造です:
unique_numbers = set([2, 3, 2, 5, 3]) # 結果: {2, 3, 5}
要素の順序は保証されず、高速なメンバーシップテストが可能です。
特殊シーケンス:文字列
一見基本型ですが、文字のシーケンスとしての特性を持ちます。クォートの混在利用例:
mixed_quotes = 'He said: "It\'s raining"' # エスケープ不要
raw_string = r"C:\new_project\docs" # バックスラッシュをエスケープしない
文字列は不変オブジェクトのため、操作時には新しいインスタンスが生成されます。