Pythonの内包表記と条件文



Page content

Pythonの内包表記で作れるもの、条件文との組み合わせ。


CodeCampGATE
CodeCampGATE


内包表記

Pythonでループを回してリストを作る際、リスト内包表記が使える。

my_list = []
for i in range(10):
    my_list.append(i * 2)

こう書かなくても、

my_list = [i * 2 for i in ramge(10)]

こう書ける。

リストだけでなく、dictも内包表記で作れる。

my_dict = {names[i]: scores[i] for i in range(10)}

括弧で括って内包表記を書くとtupleになりそうだが、ならない。これはジェネレータになる。

my_generator = (i * 2 for i in ramge(10))

tupleは内包表記で作れないので、リストを作ってtupleで変換する。

my_tuple = tuple([i * 2 for i in ramge(10)])

条件付き内包表記

条件付き内包表記でリストやdictなどを作成することができる。

この場合、ifのみかif~else~かで書く場所が異なる。

if

普通に書くと、

my_list = []
for i in range(10):
    if i % 2:
        my_list.append(i * 2)

リスト内包表記で書くと、

my_list = [i * 2 for i in ramge(10) if i % 2]

ifはfor文の後ろに置く。

if〜else〜

普通に書くと、

my_list = []
for i in range(10):
    if i % 2:
        my_list.append(i * 2)
    else:
        my_list.append(i / 2)

リスト内包表記で書くと、

my_list = [i * 2 if i % 2 else i / 2 for i in ramge(10)]

if〜else〜はfor文の前に置く。


おわり

ifのみの方はリストに格納するものを取捨選択する、if〜else〜の方は二択(かそれ以上)はあるが毎回リストに格納していく、と考えると、直感的に理解しやすい、かもしれません。