What is key=lambda in python

原文地址:
http://stackoverflow.com/questions/13669252/what-is-key-lambda

A lambda is an anonymous function:

f = lambda: ‘foo’
print f()
foo
It is often used in functions such as sorted() that take a callable as a parameter (often the key keyword parameter). You could provide an existing function instead of a lambda there too, as long as it is a callable object.

Take the sorted() function as an example. It’ll return the given iterable in sorted order:

sorted([‘Some’, ‘words’, ‘sort’, ‘differently’])
[‘Some’, ‘differently’, ‘sort’, ‘words’]
but that sorts uppercased words before words that are lowercased. Using the key keyword you can change each entry so it’ll be sorted differently. We could lowercase all the words before sorting, for example:

def lowercased(word): return word.lower()

lowercased(‘Some’)
‘some’
sorted([‘Some’, ‘words’, ‘sort’, ‘differently’], key=lowercased)
[‘differently’, ‘Some’, ‘sort’, ‘words’]
We had to create a separate function for that, we could not inline the def lowercased() line into the sorted() expression:

sorted([‘Some’, ‘words’, ‘sort’, ‘differently’], key=def lowercased(word): return word.lower())
File “”, line 1
sorted([‘Some’, ‘words’, ‘sort’, ‘differently’], key=def lowercased(word): return word.lower())
^
SyntaxError: invalid syntax
A lambda on the other hand, can be specified directly, inline in the sorted() expression:

sorted([‘Some’, ‘words’, ‘sort’, ‘differently’], key=lambda word: word.lower())
[‘differently’, ‘Some’, ‘sort’, ‘words’]
Lambdas are limited to one expression only, the result of which is the return value.

There are loads of places in the Python library, including built-in functions, that take a callable as keyword or positional argument. There are too many to name here, and they often play a different role.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值