30

並べ替えで使用されているようですが、このコード行の個々のコンポーネントは実際には何を意味するのでしょうか?

key=lambda x: x[1]

なにlambda、なに、なに、x:どうして...[1]x[1]

max(gs_clf.grid_scores_, key=lambda x: x[1])

sort(mylist, key=lambda x: x[1])
4

6 に答える 6

23

lambdaインライン関数を効果的に作成します。たとえば、この例を次のように書き換えることができます。

max(gs_clf.grid_scores_, key=lambda x: x[1])

名前付き関数の使用:

def element_1(x):
    return x[1]

max(gs_clf.grid_scores_, key=element_1)

この場合、は、2 番目の要素 ( ) が他のすべての要素の 2 番目の要素よりも大きいmax()配列内の要素を返します。x[1]別の言い回しは、関数呼び出しが意味するとおりです。キーx[1]として使用して、最大要素を返します。

于 2013-04-30T22:32:32.880 に答える
16

lambda無名関数を意味します。この場合、この関数は 1 つの引数xを取り、戻りますx[1](つまり、 のインデックス 1 の項目x)。

現在、リストの各要素に適用される値に基づいてsort(mylist, key=lambda x: x[1])並べ替えます。同様に、for 各要素によって返されるものに関して、 の最大値を返します。mylistkeymax(gs_clf.grid_scores_, key=lambda x: x[1])gs_clf.grid_scores_key

また、この特定の関数は、ライブラリの 1 つに既に含まれていることも指摘しておく必要がありますoperator。具体的にoperator.itemgetter(1)は、あなたのkey.

于 2013-04-30T22:33:18.220 に答える
9

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)]
于 2019-09-12T14:07:48.340 に答える