sorted()引数の背後にある構文がよくわかりません。
key=lambda variable: variable[0]
lambda恣意的じゃない?variableのように見えるものに が 2 回記載されているのはなぜdictですか?
sorted()引数の背後にある構文がよくわかりません。
key=lambda variable: variable[0]
lambda恣意的じゃない?variableのように見えるものに が 2 回記載されているのはなぜdictですか?
keyコレクションの項目を比較する前に変換するために呼び出される関数です。に渡されるパラメーターkeyは、呼び出し可能なものでなければなりません。
を使用するとlambda、無名関数 (呼び出し可能) が作成されます。callableの場合、sortedパラメータは 1 つしか取りません。Pythonlambdaは非常に単純です。本当にできることと返すことができるのは 1 つだけです。
の構文lambdaは、単語のlambda後にパラメータ名のリストが続き、その後に 1 つのコード ブロックが続きます。パラメータ リストとコード ブロックは、コロンで区切られています。whileこれは、for、などの python の他の構造と同様ifです。これらはすべて、通常はコード ブロックを持つステートメントです。Lambda は、コード ブロックを含むステートメントの単なる別のインスタンスです。
lambda の使用と def の使用を比較して、関数を作成できます。
adder_lambda = lambda parameter1,parameter2: parameter1+parameter2
def adder_regular(parameter1, parameter2): return parameter1+parameter2
lambda は、名前を割り当てずにこれを行う方法を提供するだけです。これは、関数へのパラメーターとして使用するのに最適です。
variableコロンの左側はパラメーターの名前であり、右側はコード ブロックで何かを計算するために使用されているため、ここでは 2 回使用されています。
lambdaは、無名関数の生成に使用される Python キーワードです。
>>> (lambda x: x+2)(3)
5
のvariable左側は:パラメータ名です。variable右側の の使用は、パラメーターを使用することです。
以下とほぼ同じ意味です。
def some_method(variable):
return variable[0]
key=lambdaを使用した sorted()関数の使用例をもう 1 つ示します。タプルのリストがあるとしましょう。各タプルには、車のブランド、モデル、および重量があり、このタプルのリストをブランド、モデル、または重量でソートしたいとします。ラムダでそれを行うことができます。
cars = [('citroen', 'xsara', 1100), ('lincoln', 'navigator', 2000), ('bmw', 'x5', 1700)]
print(sorted(cars, key=lambda car: car[0]))
print(sorted(cars, key=lambda car: car[1]))
print(sorted(cars, key=lambda car: car[2]))
結果:
[('bmw', 'x5', '1700'), ('citroen', 'xsara', 1100), ('lincoln', 'navigator', 2000)]
[('lincoln', 'navigator', 2000), ('bmw', 'x5', '1700'), ('citroen', 'xsara', 1100)]
[('citroen', 'xsara', 1100), ('bmw', 'x5', 1700), ('lincoln', 'navigator', 2000)]
lambdaは無名関数であり、任意の関数ではありません。受け入れられるパラメーターは、使用している変数と、それを並べ替える列です。
の文脈でラムダの使い方を聞かれたsorted()ので、こちらもご覧ください https://wiki.python.org/moin/HowTo/Sorting/#Key_Functions
言い換えると、ソートされた関数のキー (オプション。順序を決定するために実行する関数。デフォルトは None) は関数を期待し、ラムダを使用します。
ラムダを定義するには、並べ替えたいオブジェクト プロパティを指定すると、Python の組み込みの並べ替え関数が自動的に処理します。
複数のプロパティで並べ替えたい場合は、key = lambda x: (property1, property2) を割り当てます。
order-by を指定するには、sorted 関数の 3 番目の引数 (オプション。ブール値。False は昇順、True は降順、デフォルトは False) として reverse= true を渡します。