Pythonでリスト内包表記を使うにはどうしたらいいか?

2019年11月21日

みなさまおはこんばんにちは、せなです

今回はリスト内包表記の使い方について解説いたします

リスト内包表記の基本的な書き方

リスト内包表記は基本的には以下のような形で記述します

[xの処理 for 変数 in 配列や辞書など]

以下のように配列の要素に四則演算を適用したい場合には以下のように記述します

[x * 2 for x in [1, 2, 3, 4]]
----結果----
[2, 4, 6, 8]

if 判定を使用した内包表記

if 判定を行う場合には以下のように記述します

[x * 2 for x in [1, 2, 3, 4] if x < 4]
----結果----
[2, 4, 6]

ifを使用した内包表記ではifを後置法のような形で記述することになります

上のコードを通常の記述方法で書きますと以下のようになります

for x in [1, 2, 3, 4]:
    if not x < 4:        #notを使うことで同じ結果を得られる
        break
    x * 2
----結果----
[2, 4, 6]

辞書内包表記

辞書内包表記の基本的な書き方は以下となります

{キー: 値 for x in 配列や辞書など}

例文として辞書内包表記を使用したしコードを以下に記述します

str = 'Hello Python'
{dict: str.count(dict) for dict in str}
----結果----
'H': 1, 'e': 1, 'l': 2, 'o': 2
' ': 1, 'P': 1, 'y': 1, 't': 1, 'h': 1, 'n': 1

ジェネレータ内包表記

ジェネレータ内包表記の基本的な書き方は以下となります

(xの処理 for x in 配列や辞書など)

他の内包表記と違い[ ]ではなく( )となっている点に気おつけてください

また、( )となっていますがタプル内包表記ではないので注意が必要です

集合内包表記

集合内包表記の基本的な書き方は以下となります

{xの処理 for x in 配列や辞書など}

辞書内包表記と似ていますので間違えやすいです

存在する関数の代わりとしての内包表記

関数を使用するよりも簡潔に記述できますのでオススメです

map()関数

map()を内包表記で記述すると以下のようになります

#map(lambda x : x * 2, range(1, 5))とほとんど同じ
[x * 2 for x in range(5)]
----結果----
[0, 1, 4, 9, 16]

filter()関数

filter()を内包表記で記述すると以下のようになります

#filter(lambda x : x * 2, range(1, 5))と同じ
[x for x in range(5) if x * 2]
----結果----
[1, 2, 3, 4]

終わりに

これで基本的の内包表記の書き方は大丈夫だと思います

ここまで読んで下さり、ありがとうございました
ではでは~