私はいくつかのラムダ関数を書いていましたが、これを理解できませんでした。lambda x: x if (x<3)
Pythonのようなものを持つ方法はありますか? 正常lambda a,b: a if (a > b) else b
に動作します。これまでのところlambda x: x < 3 and x or None
、私が見つけた中で最も近いようです。
質問する
97527 次
4 に答える
81
ラムダは、他の関数と同様に、戻り値を持っている必要があります。
lambda x: x if (x<3)
そうでない場合に何を返すかを指定していないため、機能しませんx<3
。デフォルトでは、関数はを返すNone
ので、次のことができます
lambda x: x if (x<3) else None
しかし、おそらくあなたが探しているのは、if
条件付きのリスト内包です。例えば:
In [21]: data = [1, 2, 5, 10, -1]
In [22]: [x for x in data if x < 3]
Out[22]: [1, 2, -1]
于 2012-10-03T13:05:54.687 に答える
7
filter
Python 2で探していたものを正確に提供することがわかりました:
>>> data = [1, 2, 5, 10, -1]
>>> filter(lambda x: x < 3, data)
[1, 2, -1]
2.xと3.xでは実装が異なります。2.x はリストを提供しますが、3.x は反復子を提供します。リスト内包表記を使用すると、3.x での使用がよりクリーンになる可能性があります。
>>> data = [1, 2, 5, 10, -1]
>>> [filter(lambda x: x < 3, data)]
[1, 2, -1]
于 2017-01-10T19:17:08.627 に答える
5
何が問題なのlambda x: x if x < 3 else None
ですか?
于 2012-10-03T13:04:48.093 に答える