2017-05-09 13 views
-1

このPythonコードについて説明できますか? Here how does L.sort(fun) `work?だから、あなたはあなた自身の機能「楽しさ」を使用して比較をコントロールしようとしているPythonのソート関数でcmp引数を使う方法

The sort() method takes optional arguments for controlling the comparisons. 

cmp specifies a custom comparison function of two arguments (list items) 
which should return a negative, zero or positive number depending on whether 
the first argument is considered smaller than, equal to, or larger than the 
second argument: cmp=lambda x,y: cmp(x.lower(), y.lower()). 
The default value is None. 

:公式ドキュメントから

def fun(a, b): 
    return cmp(a[1], b[1]) 

L= [[2, 1], [4, 5, 3]] 
L.sort(fun) 
print L 
+0

それは自明ではなく、すべての説明はPythonのドキュメントを検索することで見つけることができます。場合によってはここでも可能ですhttp://stackoverflow.com/documentation/python/809/incompatibilities-moving-from-python-2-to-python-3/6139/cmp-function-removed-in-python-3#t= 201705091116364415354 –

答えて

0

。これは、リスト内のリストの最初のインデックスにある値(ネストされたリスト)を比較します。 別途テストしようとすると、a [1]がb [1]
よりも小さく、出力が[[2,1]、[4,5,3]]よりも小さくなるため-1になりますすでにソートされています

a = [2,1] 
b = [4,5,3] 
cmp(a[1], b[1]) 

第1インデックスの値をこのように変更してみて、それがどのように機能しているかを理解することができます。この

def fun(a,b): 
    return cmp(a[1], b[1]) 
L=[[2,6],[4,5,3]] 
L.sort(fun) 
print L 

よう

何かが私はこれが役立つことを願っています。

+0

L = [1,2,3,4]を使用すると、エラーメッセージが表示されるのはなぜですか? –

+0

@SelvakumarAnushan:ネストされたリストではないため、そうです。 L = [1,2,3,4] a [1]の場合、b [1]は意味をなさない –

関連する問題