繁体   English   中英

如何将此lambda命令转换为Python中的函数?

[英]How to convert this lambda command to a function in Python?

我如何使用lambda命令将以下代码行本身转换为函数?

我正在努力获取lambda的精髓,并想将其应用于我发现的示例。 我对如何将xy放入自己的函数中时感到困惑,例如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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM