LoginSignup
2
4

More than 1 year has passed since last update.

内包表記

Last updated at Posted at 2020-02-16

リスト内包表記

l = []
for i in range(10):
    if i % 2 == 0:
        l.append(i)
print(l)

同じことがリスト内包表記では下記のようになる

l = [i for i in range(10) if i % 2 ==0]
print(l)
出力
[0, 2, 4, 6, 8]

辞書内包表記

w = ['Monday', 'Tuesday','Friday']
f = ['banana', 'apple', 'orange']
d= {}
for x, y in zip(w,f):
    d[x]=y
print(d)

同じことが辞書内包表記では下記のようになる

w = ['Monday', 'Tuesday','Friday']
f = ['banana', 'apple', 'orange']
d = {x:y for x,y in zip(w,f)}
print(d)
出力
{'Monday': 'banana', 'Tuesday': 'apple', 'Friday': 'orange'}

集合内包表記

s = set()
for i in range(10):
    if i % 2 == 0:
        s.add(i)
print(s)

同じことが集合内包表記では下記のようになる

s = {i for i in range(10) if i % 2 == 0}
print(s)
出力
{0, 2, 4, 6, 8}

ジェネレータ式

def g():
    for i in range(10):
        if i % 2 == 0:
            yield i
g = g()
print(next(g))
print(next(g))
print(next(g))
print(next(g))

同じことがジェネレータ式では下記のようになる。

g = (i for i in range(10) if i % 2 == 0) #タプルではないので注意が必要
# g = tuple(i for i in range(10) if i % 2 == 0) タプルの内包表記
print(next(g))
print(next(g))
print(next(g))
print(next(g))
出力
0
2
4
6

なお、公式ドキュメントに「ジェネレータ表記法」と書いてあり「ジェネレータ内包表記」ではない。
https://docs.python.org/ja/3/reference/expressions.html#generator-expressions

ジェネレータ式 (generator expression) とは、丸括弧を使ったコンパクトなジェネレータ表記法です:
ジェネレータ式は新たなジェネレータオブジェクトを与えます。この構文は内包表記とほぼ同じですが、角括弧や波括弧ではなく、丸括弧で囲まれます。

2
4
1

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
2
4