ラムダ関数を書いていて、これを理解できませんでした。 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. 疑問がある場合/他-IFロジック
- 2. C#他に例外がある場合
- 3. Codeigniter - 他にビューがある場合
- 4. センターテキストビュー、他のテキストビューがnullの場合(またはテキストはありません)
- 5. 信号をラムダで接続すると動作しない場合がありますか?
- 6. 他のブロックがどんなデザインパターンにも該当する場合は、他のブロックがある場合は、
- 7. Androidバッテリーウィジェットのアップデートがある場合があります
- 8. オーディオリンクはメタデータリンクと異なる場合がありますか?
- 9. return文がある場合とない場合の違いはありますか?
- 10. Pythonize場合/他
- 11. 他の場合は、
- 12. フラグメント内のgetViewがnullを返す場合があります
- 13. WPFルーテッドコマンドのみが起動する場合があります
- 14. MEFパーツのリストが空の場合があります
- 15. アップルのAPNS配信が遅い場合があります
- 16. コードギターのルートが動作しない場合があります
- 17. Emacs Clojureモードのタブインデントが巨大な場合があります
- 18. レール3へのアップグレードが遅い場合があります
- 19. セレンのオープンコマンドが動作しない場合があります
- 20. "onselectstart"がある場合、 "onselectend"はありますか?
- 21. ngmodelが== ""(空)の場合のコンテンツの表示方法、ngmodelが!= ""の場合、他のコンテンツを表示する必要があります
- 22. 他が起動している場合に1つのタスクを終了する必要があります
- 23. HTML内に他の埋め込みがある場合
- 24. 他の条件文がある場合は「Ruby-esque」
- 25. NSFileWrapperがnilを返す場合があります。
- 26. ヌル合体とラムダ
- 27. makeとgmakeがelse statmentの場合には互換性があります
- 28. XCodeスタティックライブラリにダイナミックライブラリとのリンケージが必要な場合がありますか?
- 29. HPUXとSolarisのLD_PRELOADが有効にならない場合があります。
- 30. 特定のクラスがある場合とない場合のデザインインターフェイス
@ ubuntu - ありがとうございます。私はそれを指定せずにNoneを返すと仮定した理由は不明です。 – root
これは合理的な仮定です。なぜなら、関数はデフォルトでNoneを返すからです。重要なことは、 'lambda x:'に続くものは、文ではなく*式*でなければならないということです。 – unutbu
@root私はときどき 'lambda'を' def lambda(x、y):return ... 'と書かれているように考えるのが便利だと思います。 –