やる気がストロングZERO

やる気のストロングスタイル

Phthonの内包表記まとめ

※Phthon3

Phthonには内包表記ってのがあって、これを使うとリスト等のコレクションの各要素を使って新しいコレクションを作るのを1行で書ける。

内包表記を使わなくても、forを使えばできることなのでなかなか覚えなかったが、 そろそろ覚えようと思ったのでまとめてみる。

リスト内包表記

1~10までの数値が入ったリストの各数値に10を加えたリスト作成したい時。

>>> num_list = [1,2,3,4,5,6,7,8,9,10]
>>> [n+10 for n in num_list]
[11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

偶数数値のみのリストを作成したい時にはifを追加する。

>>> num_list = [1,2,3,4,5,6,7,8,9,10]
>>> [n for n in num_list if n%2==0]
[2, 4, 6, 8, 10]

ディクショナリ内包表記

名前と年齢の情報をもったディクショナリから、キーの名前に年齢を連結したディクショナリを作りたい時。

>>> people_age = {"斉藤": 20, "山田": 22, "中野": 40}
>>> {name+str(age): age for name, age in people_age.items()} # imems()が必要なことに注意
{'斉藤20': 20, '山田22': 22, '中野40': 40}

キー部分だけのリストを作りたい時。

>>> {name+str(age) for name, age in people_age.items()}
{'山田22', '中野40', '斉藤20'}

斎藤さんは除きたい時。

>>> {name+str(age) for name, age in people_age.items() if name != "斉藤"}
{'中野40', '山田22'}

Set内包表記

バナナ以外の、すべて大文字のSetを作りたい時。

>>> fluit_set = {"apple", "banana", "orange"}
>>> {f.upper() for f in fluit_set if f != "banana"}
{'APPLE', 'ORANGE'}

もっと詳しい感じ↓ qiita.com