if
関数内でステートメントを宣言したかったlambda
:
仮定する:
cells = ['Cat', 'Dog', 'Snake', 'Lion', ...]
result = filter(lambda element: if 'Cat' in element, cells)
「猫」を除外することは可能result
ですか?
if
関数内でステートメントを宣言したかったlambda
:
仮定する:
cells = ['Cat', 'Dog', 'Snake', 'Lion', ...]
result = filter(lambda element: if 'Cat' in element, cells)
「猫」を除外することは可能result
ですか?
ここでは必要ありませんif
。Yourlambda
はブール値を返しfilter()
、 が返す要素のみをlambda
返しますTrue
。
次のいずれかを実行しようとしているようです。
>>> filter(lambda cell: 'Cat' in cell , cells)
['Cat']
または...
>>> filter(lambda cell: 'Cat' not in cell, cells)
['Dog', 'Snake', 'Lion', '...']
...どちらかわかりません。
filter(function, iterable)
と同等で[item for item in iterable if function(item)]
あり、このパターンにリスト内包表記を使用する方がより一般的 (Pythonic) であることに注意してください。
>>> [cell for cell in cells if 'Cat' in cell]
['Cat']
>>> [cell for cell in cells if 'Cat' not in cell]
['Dog', 'Snake', 'Lion', '...']
詳細については、リスト フィルタリング: リスト内包表記とラムダ + フィルターを参照してください。