6
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonの内包表記 まとめ

Last updated at Posted at 2021-05-29

##はじめに
初投稿です。基本は自分自身の備忘録としてアウトプットしていこうと考えていますので、駄文になりますがご容赦ください。
##この記事の趣旨
内包表記が使えると簡素でコードが見やすく、何よりカッコいいコードに見えます。
今回は4種類の内包表記について備忘録としてまとめます。

##今回のトピック
1.リスト内包表記
2.辞書内包表記
3.集合内包表記
4.ジェネレータ式

###1.リスト内包表記

#####要件
1〜5の数値が入ったタプルをfor文でまわし、順に[hoge]というリストに格納する動作を行う
#####for文を使ったリストへの追加

code
tpl = (1, 2, 3, 4, 5)
hoge = []
for i in tpl:
    hoge.append(i)

#####内包表記
上記のコードを内包表記にしたもの

code
tpl = (1, 2, 3, 4, 5)
hoge = [i for i in tpl]

#####補足
条件分岐をifで追加できる
下記のコードは偶数のみ追加する場合。上記の文末にifで条件式を書けばOK

code
tpl = (1 ,2, 3, 4, 5)
hoge = [i for i in tpl if i % 2 == 0]

###2.辞書内包表記
#####要件
例として、曜日ごとの朝食を辞書に登録する。
具体的には曜日をキー、メニューを値として登録

#####for文を使用した辞書への追加

code
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

#####内包表記
上記のコードを内包表記にしたもの

code
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文を使用した集合への追加

code
s = set()
for i in range(10):
    s.add(i)

#####内包表記

code
s = {i for i in range(10)}

これはとてもシンプルですね!
{}で囲うので辞書型に書き方が似ている点が注意です。

###4.ジェネレータ式
#####要件
1から10までの数値を出力するジェネレータ

#####for文を使用した辞書への追加

code
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()での表示もできます。

code
g = (i for i in range(10))
for x in g:
    print(x)
#出力結果
0
1
2
3
4
5
6
7
8
9

##まとめ
4種類の内包表記についてまとめました。
内包表記が使えるとコードが読みやすく、記述も少なくてすみますのでぜひ使ってみてはいかがでしょうか?
ジェネレータはいまいち実務での使い所がわからないので、今後の学習で取り入れていければと考えています。
最後までお付き合い頂きありがとうございました。

6
16
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?