質問
私はいくつかのLambda関数を書いていて、これを理解できなかった。Pythonでlambda x: x if (x<3)
のようなものを持つ方法はありますか?lambda a,b: a if (a > b) else b
がうまくいきます。これまでのところlambda x: x < 3 and x or None
が見つかった最も近いようです。
解決
lembdaは、任意の関数と同様に、戻り値を持つ必要があります。
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]
. 他のヒント
lambda x: x if x < 3 else None
の何が問題なのか?
ゾンビを蘇生させるのがすみません。
私は同じ質問に対する答えを探していました、そして私は私が探していたものを正確に提供されたものを提供することを見つけました:
>>> data = [1, 2, 5, 10, -1]
>>> filter(lambda x: x < 3, data)
[1, 2, -1]
.
実装は2.xと3.xの両方で同じです。 > https://docs.python.org/2/library/functions.html#filter. > https://docs.python.org/3/library/functions.html#filter.
は、条件付きチェックのために「フィルタ」を呼び出すようにしてください。基本的に、map()
は、イテラファーの発生ごとに機能する必要があるため、選択できず選択できません。しかし、フィルタは選択を絞り込むのに役立ちます。たとえば、1から19までのリストを作成しますが、偶数のみのののを作成したいです。
x = list(range(1,20))
y = tuple(map(lambda n: n**2, filter(lambda n: n%2==0,x)))
print (y)
. 所属していません StackOverflow