[英]How to convert this lambda command to a function in Python?
我如何使用lambda命令将以下代码行本身转换为函数?
我正在努力获取lambda的精髓,并想将其应用于我发现的示例。 我对如何将x
和y
放入自己的函数中时感到困惑,例如def sortedList(myList)
带有lambda的行如下:
myList = [[1,2],[19,20],[2,3]]
listNums = sorted(myList,
sortList = lambda x,y: x[0] + y[0] if x[0] == y[0] else y[1] - x[1])
listNums = sorted(myList,
sortList = lambda x,y: x[0] + y[0] if x[0] == y[0] else y[1] - x[1])
相当于
def funcname(x,y):
return x[0] + y[0] if x[0] == y[0] else y[1] - x[1]
listNums = sorted(myList, sortList=funcname)
但是,这不是用于sorted
的正确语法-应该是
listNums = sorted(mylist, cmp=funcname)
为了解决您的评论,sorted使用cmp
函数对列表中的元素进行排序。 在您的问题中,您的列表为[[1,2],[19,20],[2,3]]
。 基本问题是,哪个先出现[1,2]
或[19,20]
? 因为可以几乎无限不同的方式回答该问题,所以可以为您提供带有cmp函数的答案。 在那种情况下,要确定这些对中的第一个对,将运行cmp(x=[1,2], y=[19,20])
进行排序。 如果值> 0,则假定x更大;如果值<0,则认为y更大;如果返回值为0,则表明它们是相同的值。
您选择的示例似乎是一种比较奇怪的方法...如果第一个值相等,则返回第一个值的总和? 如果它们都为正,则x将始终较高,如果它们均为负,则y将始终较高。 如果它们不相等,则仅根据第二个值排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.