並べ替えで使用されているようですが、このコード行の個々のコンポーネントは実際には何を意味するのでしょうか?
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])
並べ替えで使用されているようですが、このコード行の個々のコンポーネントは実際には何を意味するのでしょうか?
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])
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]
として使用して、最大要素を返します。
lambda
無名関数を意味します。この場合、この関数は 1 つの引数x
を取り、戻りますx[1]
(つまり、 のインデックス 1 の項目x
)。
現在、リストの各要素に適用される値に基づいてsort(mylist, key=lambda x: x[1])
並べ替えます。同様に、for 各要素によって返されるものに関して、 の最大値を返します。mylist
key
max(gs_clf.grid_scores_, key=lambda x: x[1])
gs_clf.grid_scores_
key
また、この特定の関数は、ライブラリの 1 つに既に含まれていることも指摘しておく必要がありますoperator
。具体的にoperator.itemgetter(1)
は、あなたのkey
.
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)]