我正在尝试转换代码,我遇到了这一行,我不确定它是做什么的。我知道我可以使用a:a*a
之类的键进行排序,但它如何处理两个键?
这是我想要转换的行(对C#,如果重要的话):
arr.sort(lambda a,b:a-b)
答案 0 :(得分:1)
https://docs.python.org/2/tutorial/datastructures.html
list.sort(cmp = None,key = None,reverse = False)
对列表中的项目进行排序(参数可用于排序自定义,请参阅sorted()以获取解释)。
https://docs.python.org/2/library/functions.html#sorted
cmp指定两个参数的自定义比较函数(iterable 元素)应返回负数,零或正数 取决于第一个参数是否被认为小于, 等于或大于第二个参数:cmp = lambda x,y: cmp(x.lower(),y.lower())。默认值为None。
lambda a,b
用于在Python中定义匿名函数。
所以这与
相同def f(a,b):
return a-b
arr.sort(f)
如果> 0
自然会返回a > b
,0
会自然返回a==b
。
正如@MartijnPieters指出的那样,这应该是简单的“自然”排序,如果我们没有运算符重载(例如普通整数),它将与没有参数的sort()
相同。
答案 1 :(得分:0)