Quantcast
Viewing all articles
Browse latest Browse all 99

Python 勉強メモ #2 リスト以外のデータ構造

タプル

リストのようだが、イミュータブルであるデータ構造。要素を追加したり削除したりできない。
スライスによる操作や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()

Viewing all articles
Browse latest Browse all 99

Trending Articles