2

if関数内でステートメントを宣言したかったlambda

仮定する:

cells = ['Cat', 'Dog', 'Snake', 'Lion', ...]
result = filter(lambda element: if 'Cat' in element, cells)

「猫」を除外することは可能resultですか?

4

3 に答える 3

2

ここでは必要ありません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', '...']

詳細については、リスト フィルタリング: リスト内包表記とラムダ + フィルターを参照してください。

于 2013-07-26T04:48:27.377 に答える