##はじめに
初投稿です。基本は自分自身の備忘録としてアウトプットしていこうと考えていますので、駄文になりますがご容赦ください。
##この記事の趣旨
内包表記が使えると簡素でコードが見やすく、何よりカッコいいコードに見えます。
今回は4種類の内包表記について備忘録としてまとめます。
##今回のトピック
1.リスト内包表記
2.辞書内包表記
3.集合内包表記
4.ジェネレータ式
###1.リスト内包表記
#####要件
1〜5の数値が入ったタプルをfor文でまわし、順に[hoge]というリストに格納する動作を行う
#####for文を使ったリストへの追加
tpl = (1, 2, 3, 4, 5)
hoge = []
for i in tpl:
hoge.append(i)
#####内包表記
上記のコードを内包表記にしたもの
tpl = (1, 2, 3, 4, 5)
hoge = [i for i in tpl]
#####補足
条件分岐をifで追加できる
下記のコードは偶数のみ追加する場合。上記の文末にifで条件式を書けばOK
tpl = (1 ,2, 3, 4, 5)
hoge = [i for i in tpl if i % 2 == 0]
###2.辞書内包表記
#####要件
例として、曜日ごとの朝食を辞書に登録する。
具体的には曜日をキー、メニューを値として登録
#####for文を使用した辞書への追加
day = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
menu = ['bread', 'oat meal', 'cereal', 'bacon', 'omelet','ham', 'waffle']
dic = {}
for d, m in zip(day,menu):
dic[d] = m
#####内包表記
上記のコードを内包表記にしたもの
day = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
menu = ['bread', 'oat meal', 'cereal', 'bacon', 'omelet','ham', 'waffle']
dic = {d: m for d, m in zip(day, menu)}
###3.集合内包表記
#####要件
range関数で数値を10回集合に追加する
#####for文を使用した集合への追加
s = set()
for i in range(10):
s.add(i)
#####内包表記
s = {i for i in range(10)}
これはとてもシンプルですね!
{}で囲うので辞書型に書き方が似ている点が注意です。
###4.ジェネレータ式
#####要件
1から10までの数値を出力するジェネレータ
#####for文を使用した辞書への追加
def g():
for i in range(10):
yeild i
g = g()
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
print(next(g))
#出力結果
0
1
2
3
4
5
6
7
8
9
#####内包表記
上記のコードを内包表記にしたもの
他のコードと比べても非常にスリムになったと思います。
next()での表示もできます。
g = (i for i in range(10))
for x in g:
print(x)
#出力結果
0
1
2
3
4
5
6
7
8
9
##まとめ
4種類の内包表記についてまとめました。
内包表記が使えるとコードが読みやすく、記述も少なくてすみますのでぜひ使ってみてはいかがでしょうか?
ジェネレータはいまいち実務での使い所がわからないので、今後の学習で取り入れていければと考えています。
最後までお付き合い頂きありがとうございました。