タプル
リストのようだが、イミュータブルであるデータ構造。要素を追加したり削除したりできない。
スライスによる操作やcount()
や、index()
などのメソッドは使用できる。
t = (1, 2, 3, 4, 5)
# ()をつけなくてもカンマがついた時点でタプルと認識される
t = 1, 2, 3, 4, 5 → (1, 2, 3, 4, 5)
t[::-1] → (5, 4, 3, 2, 1)
t.count(1) → 1
t.index(1) → 0
タプルのアンパッキング
tuple = (10, 20)
x, y = tuple → x = 10, y = 20
# これを使うと以下のような書き方もできる
min, max = 0, 100 → min = 0, max = 100
# 値の入れ替えを簡単にできる
a = 10
b = 20
a, b = b, a → a = 20, b = 10
辞書型(dict)
キーバリューでデータを管理できるデータ構造。Goで言うマップのようなもの。
d = {'x': 10, 'y': 20, 1: 300}
d['x'] → 10
d[1] → 300
# これでも生成できる
dd = dict(a=100, b=200) → {'a':100, 'b':200}
dictの便利メソッド
d = dict(a=100, b=200)
# キーをリストで取得する
d.keys() → ['x', 'y']
# バリューをリストで取得する
d.values() → [100, 200]
# dictをアップデート。同じキーは上書きして、異なるキーは追加する。
d2 = dict(a=1000, c=300)
d.update(d2) → {'a':1000, 'b':200, 'c':300}
d.update(d2)
# 指定したキーに対応するバリューを取得する
d.get('a') → 1000
# 存在しないキーを指定すると、NoneTypeが返ってくる
d.get('d') →
# 指定したキーの要素を取得して削除
d.pop('a') → {'b':200, 'c':300}
# 要素を全て削除
d.clear() → {}
# 要素が存在するかどうかを判定
'b' in d → True
'z' in d → False
集合型(set)
数学の集合と同じ。集合なのでインデックスはない。
# 集合なので重複は弾かれる
a = {1, 2, 2, 3, 3} → {1, 2, 3}
b = {1, 2, 3, 4, 5}
# 集合の計算ができる
a + b → {1, 2, 3, 4, 5}
b - a → {4, 5}
a & b → {1, 2, 3}
set(集合)の便利メソッド
s = {1, 2, 3}
# 要素を追加する
s.add(4) → {1, 2, 3, 4}
# 要素を削除する
s.remove(4) → {1, 2, 3}
# 要素を全て削除する
s.clear()