
初心者向けと言われPythonを始めましたのですがリファレンスガイドを読むだけで四苦八苦しています
そこでPythonのlambdaについてお聞きします
例えばmin()関数に使えるkey=のlambdaの書き方を知りたいのですがどこを調べたら良いのでしょうか
例えばこんな使い方があります
ls = [1, 4, 5, 7, 10, 12, 15]の中から8に一番近い要素を求める場合に
min(ls, key=lambda x: (abs(8 - x), x))で求められます
この(abs(9 - x), x)のタプルの部分が何かを知るにはどこを調べたら良いのでしょうか?
私の想像ではタプルの1番目の値でまずminを選んで同じ値なら2番目の値で選んでいるのだと想像しましたが、想像の域から出ることができません。
minに限らず他の関数でも使えるlambdaの使い方を知るにはどこを調べたらよいでしょうか?
No.2ベストアンサー
- 回答日時:
言語リファレンスはどんな言語でも読みにくいし、
検索システムもシプルなので、簡単には
知りたい情報を取り出すのは難しいでしょう。
最初は入門書やコミュニティに頼った方がいい。
リファレンスはある程度読み込んで
その構成を把握しないと、なかなか使えませんし
初心者を相手にしてません。
確かにそう思います
1つの関数に数個の使用例が載ってるJavaScriptやPHPに比べてPythonは解り難いですし使用されている言葉も初心者には難解な言葉ばかりに感じます
No.1
- 回答日時:
○lambda は、名前の無い関数を定義するものです。
通常の関数で考えるなら
def funcNear8(x):
return (abs(8 - x), x)
min(ls, key=funcNear8)
こんな感じ。
条件毎にいくつも関数を定義することができないような場合に、一時的に使うための関数を定義するのが、lambdaだと言えます。
このため、引数に関数を取るような関数やメソッドに対して使用することができます。
○min(ls, key=lambda x: (abs(8 - x), x)) の場合。
https://docs.python.org/ja/3/library/functions.h …
> key 引数は引数を 1 つ取る順序関数 (list.sort() のもののように) を指定します。
list.sort()
https://docs.python.org/ja/3/library/stdtypes.ht …
> key は一引数をとる関数を指定し、リストのそれぞれの要素から比較キーを取り出すのに使います (例えば、 key=str.lower)。それぞれの項目に対応するキーは一度計算され、ソート処理全体に使われます。
ということで、 lsの各要素について (abs(8 - x), x) のタプルを求め、そのタプルの大小関係を比べ、一番「小さい」値を返す、というのが「min(ls, key=lambda x: (abs(8 - x), x))」です。
タプルの大小は
https://docs.python.org/ja/3/library/stdtypes.ht …
> (完全な詳細は言語リファレンスの 比較 を参照してください。)
https://docs.python.org/ja/3/reference/expressio …
> 組み込みのコレクションどうしの辞書式比較は次のように動作します:
とたどることで確認できます。
詳しく解説いただきありがとうございました
def funcNear8(x):
return (abs(8 - x), x)
これは分かるんですけどこのタプルで返している1番目と2番目がなんだかよく解らなかったんですよね
これだけ見て理解できる人なんていませんよね
JavaScriptやPHPのCallback関数はもっと簡単でアロー関数にしろ無名関数にしろ関数の中身が明快なのでわかりやすかったのですけど
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像生成AIのプロンプトの作り...
-
vba 正規表現について教えてく...
-
pythonでのローカルファイルか...
-
if関数とは?
-
プログラム言語
-
今のプログラミング言語
-
vba クリップボードクリアにつ...
-
itエンジニアに就職希望で未経...
-
Pythonのエラーメッセージをコ...
-
P2P地震速報のEEW APIの仕様書...
-
著作権法について
-
プログラミングについて
-
自作scratch アニメの商用利用
-
Geminiフォーム 画像生成で 人...
-
数学、プログラミング、物理、...
-
Python 3.12.2 か一番最新のパ...
-
MOVEコマンドでサブフォルダー...
-
AIがプログラムする時代のプロ...
-
pythonについて(初心者です)
-
pythonでhtmlファイルの指定文...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
繰り返し1行~28行までを順順に...
-
MATLABにおける行の挿入方法
-
c言語
-
C言語で余りがマイナスになる場合
-
!(否定)演算子について
-
五目並べ
-
Matlabのspdiags関数
-
StandardMLで整数リストの奇数...
-
Z80のフラグレジスタについて
-
matlab、対角行列の作り方
-
H8マイコン C言語でのプロ...
-
Pythonの公式リファレンスガイド
-
最大値を見つけるプログラム。
-
【MATLAB】配列内の数値のキャ...
-
MATLABのデータ抽出についてお...
-
OPENCVを使ったエピポーラ幾何...
-
パイソンのプログラミングにつ...
-
教えて下さい
-
特定のPCだけ動作しないVBAマク...
-
配列数式の解除
おすすめ情報