Pythonのリスト内包表記入門
Pythonのリスト内包表記は、コンパクトな形式でリストを生成するための構文です。リスト内包表記を使用すると、ループを使用してリストを生成する一般的な処理を簡潔に記述できます。
リスト内包表記の構文
new_list = [expression for item in iterable if condition]
expression- 各要素に適用される式。新しいリストの要素がこの式に基づいて生成されるitem- イテラブル(リスト、タプル、範囲など)から取得される要素iterable- 要素を取得するためのイテラブルオブジェクトcondition- 要素をフィルタリングする条件(省略可)。条件を満たす要素のみが新しいリストに含まれる
「フィルタリング条件」を省略した場合は、すべてのデータが選択されます。
リスト内包表記の使用例
単純なリストのコピー
my_list = [1, 2, 3, 4, 5]
new_list = [val for val in my_list]
print(new_list) # [1, 2, 3, 4, 5]
タプル内の値がNoneのものを除いたリストを生成する
tuple_with_none = (1, None, "Hello", None, 5.0)
array_without_none = [str(item) for item in tuple_with_none if item is not None]
print(array_without_none) # ['1', 'Hello', '5.0']
タプル内の値がNoneの時に空文字に変換したリストを生成する
フィルタリング条件ではないので、if~elseの記述場所がexpressionの位置になります。itemがNone以外なら、str(item)とし、itemがNoneなら空文字にするという式を適用しています。
tuple_with_none = (1, None, "Hello", None, 5.0)
array_without_none2 = [str(item) if item is not None else "" for item in tuple_with_none]
print(array_without_none2) # ['1', '', 'Hello', '', '5.0'] 