Python sorted 函数:Key参数,以及lambda 函数与常规写法区别

Python sorted 函数:Key参数,以及lambda 函数与常规写法区别

第一种方式:

ous = sorted(ouFilter.ous, key=lambda ou:ou.path)
  • 使用 lambda 函数作为排序的关键字,这是一个简洁、明了的方式。lambda 函数在 Python 中表示一个简
    单的匿名函数,它没有自己的名字,因此在代码中不需要为它预留名字。在排序的上下文中,key 参数通
    常用于指定一个函数,该函数应用在输入序列的每一个元素上,其返回值被排序函数使用

第二种方式:

def key(ou):
	return ou.path
ous = sorted(ouFilter.ous, key=key)
  • 这里定义了一个名为 key 的函数,然后将其作为参数传递给 sorted 函数。虽然这也是有效的,但它的可读
    性稍差。在一般的编程实践中,如果一个函数被只使用一次,那么使用 lambda 函数会更简洁,也更具可
    读性。如果 key 函数需要在多个地方反复使用,那么定义一个完整的函数是合理的。

Key 参数解释说明:

words = ["banana", "apple", "cherry", "date"]
sorted_words = sorted(words, key=len)
print(sorted_words) # 输出:['date', 'apple', 'cherry', 'banana']
  • 你会发现 在这里是不需要使用 len(x) 这样的格式,甚至连括号都不需要,因为 sorted 函数的 key 参数,
    用于指定一个函数,该函数将被应用于每个元素,根据返回的结果进行排序。默认值为 None,表示按
    照元素的原始值进行排序。

Lambda 函数:

def add(a, b): # 普通函数
	return a+b
print(add(2,3))

add = lambda a, b: a + b # 匿名函数
print(add(2,3))
  • 你会发现 : 好像 lambda 就是省略了一个函数名,省略了一个 return 的关键词单词,然后把 def 替换为 lambda,再把函数的 () 前后两个括号去掉,把两行代码改为一行~~~

Demo 示例:

# 一维整数列表,把所有奇数都放到前面,偶数都放到后面
list1 = [19, 32, 76, 82, 23, 63, 38, 50, 20, 30, 39, 14, 19, 50, 81, 27, 77, 12, 55, 29]
a = sorted(list1, key=lambda x: x%2 == 0)
print(a)

如果上面的 lambda 函数 改为常规的写法 则是如下:

list1 = [19, 32, 76, 82, 23, 63, 38, 50, 20, 30, 39, 14, 19, 50, 81, 27, 77, 12, 55, 29]
def demo(x):
	return x % 2 == 0
a = sorted(list1,key=demo)
print(a)
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值