ラムダ関数を書いていて、これを理解できませんでした。 Pythonでlambda x: x if (x<3)
のようなものを作る方法はありますか? lambda a,b: a if (a > b) else b
が問題なく動作します。これまでのところlambda x: x < 3 and x or None
が私が見つけた最も近いようです。Pythonラムダと他の場合があります。
答えて
ラムダは、どのような関数と同様、戻り値を持つ必要があります。
lambda x: x if (x<3)
x<3
が返されるものが指定されていないため、機能しません。デフォルトの機能によってあなたは
lambda x: x if (x<3) else None
を行うことができますので、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
で何が問題になっていますか?
このシナリオでは、リストの理解がより適切であることを理解しています。 – zinking
質問に反復は言及されていません。あなたは精緻化できますか? – user4815162342
u r右、それはおそらくちょうど推測です。 -_- – zinking
ゾンビを蘇生させて申し訳ありません。
私は同じ質問への答えを探していた、と私は私が探していたまさに提供する「フィルタ」ことが判明:
>>> 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()
はiterablesが出現するたびに動作しなければならないので、選択して選択することはできません。しかし、フィルタは選択肢の絞り込みに役立ちます。たとえば、1から19までのリストを作成しますが、のタプルを偶数だけのの正方形にしたいとします。
x = list(range(1,20))
y = tuple(map(lambda n: n**2, filter(lambda n: n%2==0,x)))
print (y)
- 1. Pythonの1行が他の場合
- 2. Python - 配列が他の配列の範囲にある場合
- 3. のpython - ラムダ私は「ラムダ」の代わりに使用することができ、他にどのようなアプローチ
- 4. 疑問がある場合/他-IFロジック
- 5. Codeigniter - 他にビューがある場合
- 6. C#他に例外がある場合
- 7. センターテキストビュー、他のテキストビューがnullの場合(またはテキストはありません)
- 8. 信号をラムダで接続すると動作しない場合がありますか?
- 9. PHPMailerとOutlook 365が動作する場合があります
- 10. 他のブロックがどんなデザインパターンにも該当する場合は、他のブロックがある場合は、
- 11. 他の場合とr
- 12. テキストがValueTextと異なる場合があります
- 13. Androidバッテリーウィジェットのアップデートがある場合があります
- 14. python oracle他の行がフェッチする場合
- 15. 他の場合
- 16. Pythonで関数がデバッグされない場合があります。
- 17. ホストヘッダーはURLと異なる場合があります
- 18. オーディオリンクはメタデータリンクと異なる場合がありますか?
- 19. return文がある場合とない場合の違いはありますか?
- 20. pythonにプリプロセッサがある場合、デバッグロギングの無効化はずっと安価です。他の選択肢はありますか?
- 21. 他のプレースホルダがある場合にIN()句でプレースホルダを使用する方法はありますか?ここ
- 22. オーバーロードの方法は、違いがオプションの場合と非オプションの場合があります。
- 23. DividendとDivisorの値が0の場合、どのような場合がありますか?
- 24. フラグメント内のgetViewがnullを返す場合があります
- 25. WPFルーテッドコマンドのみが起動する場合があります
- 26. MEFパーツのリストが空の場合があります
- 27. Pythonize場合/他
- 28. 他の場合は、
- 29. 他の場合(アンピボット)
- 30. が他の場合組み合わせると1つの文
@ ubuntu - ありがとうございます。私はそれを指定せずにNoneを返すと仮定した理由は不明です。 – root
これは合理的な仮定です。なぜなら、関数はデフォルトでNoneを返すからです。重要なことは、 'lambda x:'に続くものは、文ではなく*式*でなければならないということです。 – unutbu
@root私はときどき 'lambda'を' def lambda(x、y):return ... 'と書かれているように考えるのが便利だと思います。 –