[Python] 高速勉強 #5「配列処理・タプルとセットと辞書」

Pythonの独特な機能として「タプル」というのがある。
簡単に説明すると、
タプル
dotinstall
メモ
リストと同じだが、登録後は変更が出来ない。
リストは[**,**]という記述だが、タプルは(**,**)という記述で行う。
リストで使える命令は同じように使用できる。
変更できないメリットは、「計算処理が早くなる」「変更不可要素により堅牢なシステム構築ができる」という点がある。
タプルとリストの相互変換
1 2 3 4 5 6 7 8 |
a = (2 , 3 , 5) b = list(a) print b c = tuple(b) print c # 実行 [2 , 3 , 5] (2 , 3 , 5) |
セット
dotinstall
メモ
集合体。
重複を許さないリストのようなもの。
1 2 3 4 |
a = set([2 , 3 , 5 , 2 , 3]) print a # 実行 set([2 , 3 , 5]) |
集合演算
「-」差集合
aにあってbに無いモノを求める。
1 2 3 4 5 |
a = set([1 , 2 , 5]) b = set([3 , 4 , 5]) print a - b # 実行 set([1 , 2]) |
「|」和集合
aとbを集約
1 2 3 4 5 |
a = set([1 , 2 , 5]) b = set([3 , 4 , 5]) print a | b # 実行 set([1 , 2 , 3 , 4 , 5]) |
「&」積集合
aとbの重複した値を抜き出す
1 2 3 4 5 |
a = set([1 , 2 , 5]) b = set([3 , 4 , 5]) print a & b # 実行 set([5]) |
「^」重複排除
aとbのどちらか片方にしか無いものを抽出(重複している値を抜かす)
1 2 3 4 5 |
a = set([1 , 2 , 5]) b = set([3 , 4 , 5]) print a ^ b # 実行 set([1 , 2 , 3 , 4]) |
辞書
dotinstall
メモ
keyとvalueがペアになったもの(連想配列のようなもの)
基本的な使い方
JSONのような書き方で登録できるが、結果は登録順ではないところがポイント・・・なんでだろ?
1 2 3 4 |
a = {"b":100 , "a":200 , "c":500} print a # 実行 {'a': 200, 'c': 500, 'b': 100} |
個別に値を取り出す
これもJSONっぽい書き方なのでさほど難しくはない。
1 2 3 4 |
a = {"b":100 , "a":200 , "c":500} print a["c"] # 実行 500 |
「in」存在チェック
辞書内にkeyがセットされているかのチェックができる。
1 2 3 4 5 6 |
a = {"b":100 , "a":200 , "c":500} print "b" in a print "d" in a # 実行 True False |
一覧の取得
keys : keyの一覧の取得
1 2 3 4 |
a = {"b":100 , "a":200 , "c":500} print a.keys # 実行 ["a" , "c" , "b"] |
values :valueの一覧の取得
1 2 3 4 |
a = {"b":100 , "a":200 , "c":500} print a.values # 実行 [200 , 500 , 100] |
items : keyとvalueの一覧の取得
1 2 3 4 |
a = {"b":100 , "a":200 , "c":500} print a.items # 実行 [("a",200) , ("c",500) , ("b":100)] |