[Python] 内包表記を使ってリスト(list)を簡便にフィルタ(filter)�する

Share

[Python] 内包表記を使ってリスト(list)を簡便にフィルタ(filter)する

状況

Pythonでlistをフィルタしたい場合、listをループ処理して、条件に合致するものを別で用意したlistに詰め込む方法があります。

from pprint import pprint

listOfFruits = ['Apple', 'Banana', 'Orange']
filteredList = []

for fruit in listOfFruits:
   # Bananaを除外したリストを得る
   if fruit != 'Banana':
       filteredList.append(fruit)

pprint(filteredList)
// ['Apple', 'Orange']

しかし、もっと簡易にフィルタする方法があります。

解法

from pprint import pprint

listOfFruits = ['Apple', 'Banana', 'Orange']
# リストの内包表記(List Comprehensions)を使ってフィルタする
filteredList = [fruit for fruit in listOfFruits if fruit != 'Banana']

とてもシンプルに書けます。

listの要素がdictの場合でも、dictの特定のキーの値を条件にフィルタできるので便利です。
例えば、idが空でないdictのみを得るなら次のようにできます。

[item for item in listOfDict if item['id'] is not None]

See Also

Share