[解決済み] ラムダはどのように役立つのですか?[クローズド]
質問
Pythonのラムダを理解しようとしているのですが、どうすればいいですか?それは
lambda
は、実際の生活では忘れてしまうような、興味深い言語項目の1つなのでしょうか?
しかし、その不明瞭さ、将来のリリースで再定義される可能性(さまざまな定義に基づく私の推測)、コーディングの明快さの低下を考えると、避けるべきなのでしょうか。
これは、C言語の型のオーバーフロー(バッファオーバーフロー)を思い出させる - トップの変数を指して、他のフィールドの値を設定するためにオーバーロードすること。 これは、技術的な見せかけのようで、メンテナンスのためのコーダーの悪夢のようなものです。
どうすればいい?
について話しているのですか? ラムダ式 ? のように
lambda x: x**2 + 2*x - 5
そういうのって、実は結構便利なんですよ。 Pythonは次のようなプログラミングのスタイルをサポートしています。 関数型プログラミング ここでは、関数を他の関数に渡して何かをさせることができます。例を挙げます。
mult3 = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9])
セット
mult3
から
[3, 6, 9]
のように,元のリストの要素のうち,3の倍数であるものを削除します.
def filterfunc(x):
return x % 3 == 0
mult3 = filter(filterfunc, [1, 2, 3, 4, 5, 6, 7, 8, 9])
もちろん、この特殊なケースでは、リスト内包と同じことをすることもできます。
mult3 = [x for x in [1, 2, 3, 4, 5, 6, 7, 8, 9] if x % 3 == 0]
(として(あるいは
range(3,10,3)
しかし、リスト内包が使えない、ラムダ関数が最短距離で書き出せるような、より高度なユースケースは他にもたくさんあります。
-
他の関数から関数を返す
>>> def transform(n): ... return lambda x: x + n ... >>> f = transform(3) >>> f(4) 7
これは、Pythonのデコレータのような関数ラッパーを作成するためによく使用されます。
-
反復可能なシーケンスの要素を組み合わせて
reduce()
>>> reduce(lambda a, b: '{}, {}'.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9]) '1, 2, 3, 4, 5, 6, 7, 8, 9'
-
代替キーによるソート
>>> sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x)) [5, 4, 6, 3, 7, 2, 8, 1, 9]
私は普段からラムダ関数を使っています。慣れるまでは時間がかかりましたが、最終的には、この言語の非常に貴重な部分であることを理解するようになりました。
関連
-
Python関数の高度な応用を解説
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] mixinとは何か、なぜ有用なのか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Pythonコンテナのための組み込み汎用関数操作
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
PicgoのイメージベッドツールをPythonで実装する
-
Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み] TypeError: 'DataFrame' オブジェクトは呼び出し可能ではない
-
[解決済み】django インポートエラー - core.managementという名前のモジュールがない