気ままなタンス*プログラミングなどのノートブック

プログラミングやRPGツクール、DTM、VOCALOIDについてのんびり書きます。

【Python】初めてのPython-8章ざっくりまとめ

昨日の続き

初めてのPython 第3版

初めてのPython 第3版

リスト

  • オブジェクトを一定の順序で並べたもの

    • シーケンスの一種
    • リストとはオブジェクトの集合である
    • リスト中のオブジェクトは必ず、左から右へ一定の順序で並べられる
  • インデックス(オフセット)によって要素にアクセスできる

    • インデックスを利用しアクセスする
    • インデクシング、スライシング、連結といった操作が可能

文字列と異なる点

  • 長さを自由に変えられる

    • 特定の種類の要素(文字列の場合は文字)だけでなくあらゆる型のオブジェクトを構成要素にできる
      • リストの中にリストを入れても良い
  • シーケンスの一種だが、変更を加えることができる

    • スライシング、インデクシングの操作結果は新しいリストである
  • オブジェクトリファレンスの配列

リストのスライシング

  • 厳密には異なるが以下のステップのようにとらえるとわかりやすい
    1. 要素の削除。[]の中で指定された範囲の要素が削除される
    2. 新たな要素の挿入。=の右側に指定された新たな要素が、リストの中の、元の要素削除された位置に挿入される
L = [1, 2, 3]
L[1:2] = [4,5]

# start:end(endは含まれない)

リストのメソッド

  • appendやsortメソッドを利用
    • 値は戻さない。副作用によって、オブジェクトそのものに変更が加えられる
del L[1:]
L.append(2)
L.sort()

ディクショナリ

オブジェクトを順不同に並べたもの

  • 用途

    • 他言語でいうところの、レコードやシンボルテーブルの役割を果たす
    • スパース行列(多次元配列)を表現する
  • 要素へのアクセスはオフセット(位置を表す数字)ではなくキーを使用する

  • 可変性を持ち、「写像」のカテゴリに属する

    • 写像」とは構成要素(値)にキーが割り当てられたオブジェクトのこと
    • キー指定で特定の要素に変更を加える
    • 要素が一定の順序で並んでいることを前提とした操作(スライシング、連結)はできない
  • オブジェクトのリファレンステーブル

    • オブジェクトリファレンスの順不同テーブルであるといえる
    • システム内部ではハッシュテーブル(高速の検索が可能なデータ構造)として扱われる
    • キー検索に最適化されたハッシングアルゴリズムが使用されるため、要素へのアクセスが高速に行われる

コード例

操作、演算 説明
D2={'spam':2, 'eggs':3} 要素2つのディクショナリ
D3={'food':{'ham':1, 'egg':2}} ネスト
D2['eggs'] キーによるインデクシング
'eggs' in D2 特定の要素が含まれているかの確認
D2.keys()
D2.values()
D2.copy()
D2.get(key, default)
D2.update(D1)
D2.pop(key)
len(D1)
D2[key]=42
del D2[key]
D4 = dict.fromvalues(['a', 'b']) ディクショナリの作成
D5 = dict(zip(keylist, valslist))
D6 = dict(name='Hoge', age='45')
Matrix = {}
Matrix[(2, 3, 4)] = 88
Matrix[(7, 8, 9)] = 99

X = 2; Y = 3; Z = 4
Matrix[X, Y, Z]
# 88

# 存在しないキーにアクセスするとエラーが発生

#エラーを防ぐ - 1

if (2, 3, 6) in Matrix:
  print (Matrix[(2, 3, 6)])
else:
  print(0)

# エラーを防ぐ - 2
try:
  print Matrix[(2, 3, 6)]
except KeyError:
  print(0)