Pythonでのリスト等の型に関するメモです.

目次

  1. 比較
  2. タプル
  3. リスト
    1. リストと要素
    2. リストの結合・分割
  4. リストでループカウンタ
  5. map関数
    1. リスト型への変換
  6. 辞書
  7. 2つのリストから辞書を作る
  8. 辞書をループで使う
    1. 正値のみ抽出した辞書の例
  9. 集合
    1. 集合と要素
  10. 集合間の演算
    1. メンバーシップ・テスト
    2. 集合型への変換

比較

  • タプルはイミュータブル(要素不変),リストはミュータブル(要素可変).
  • タプル・リストはインデックス,辞書は一意なキーで要素にアクセス.
  • 辞書は異なるキーで同一の要素を持てるが,集合は要素そのものが一意.

なお,集合演算可能だがイミュータブルなfrozenset型も用意されている.

タプル

リストや集合はtuple()によりタプルへ変換できる.

リスト

リストと要素

list = [配列]
list.append('追記する要素')
list.insert(インデックス, '挿入する要素')
list.remove('削除する要素') #該当する最初の要素のみが削除される

リストの結合・分割

リストを区切り文字で結合し,数珠つなぎの文字列にするには,

'区切り文字'.join(リスト)

文字列を区切り文字で分割し,リストにするには,

'文字列'.split('区切り文字')

リストでループカウンタ

enumerate関数をリストに使うと,0始まりのループカウンタを取得できる.

l = ['天', '地' ,'人']
for index, value in enumerate(l):
# 処理

map関数

map関数は関数を引数にとる.

map(関数, リスト)

関数に代えてラムダ式も書けるので,例えば,

list(map(lambda x: x+1, [1,2,3]))

ということも可能.

リスト型への変換

集合などを引数として,list()を用いる.

辞書

2つのリストから辞書を作る

zipと辞書の内包表記を使う.

x = ["apple", "banana", "cherry"]
y = [100, 200, 300]
dict = {key: value for key, value in zip(x, y)}

辞書をループで使う

辞書dがあるとする.

  • d.items():全ての要素を持ったオブジェクトを取得
  • d.keys():全てのキーを持ったオブジェクトを取得
  • d.value():全ての値を持ったオブジェクトを取得

ループで使える.

正値のみ抽出した辞書の例

self._プロパティ名なる辞書がクラスのメンバーに存在しているものとする.

@property
def プロパティ名(self):
return {key: value for key, value in self._プロパティ名.items() if value > 0}

集合

集合と要素

  • 集合の作成:S = {x, y, z}
  • 空集合:S = set()
  • 要素の追加:S.add(x)
  • 要素の削除:S.remove(x)(集合の含まないxを削除してもエラーとならないS.discard(x)もある.)

集合間の演算

  • 和集合:S | TまたはS.union(T)
  • 積集合:S & TまたはS.intersection(T)
  • 差集合:S - TまたはS.difference(T)
  • 対称差:S ^ TまたはS.symmetric_difference(T)(互いに素であるかの判定はisdisjointメソッドを使う)
  • 部分集合:S <= TまたはS.issubset(T)(上位集合は>=issuperset
  • 真部分集合:S < T

メンバーシップ・テスト

  • x in sx not in s

集合型への変換

set()を用いる.
辞書の集合化はキーの集合になる.