Python之函数进阶-匿名函数
匿名函数
- 匿名:隐藏名字,即没有名称
- 匿名函数:没有名字的函数。
- Lambda表达式 Python中,使用Lambda表达式构建匿名函数。
- 使用lambda关键字定义匿名函数,格式为 lambda [参数列表]: 表达式
- 参数列表不需要小括号。无参就不写参数
- 冒号用来分割参数列表和表达式部分
- 不需要使用return。表达式的值,就是匿名函数的返回值。表达式中不能出现等号 lambda表达式(匿名函数)只能写在一行上,也称为单行函数
- 匿名函数往往用在为高阶函数传参时,使用lambda表达式,往往能简化代码
lambda : 0
(lambda : 0)()
(lambda x: 100)()
(lambda x: 100)(1)
(lambda x: 100)(x=111)
def a():
return None
b = lambda : None
print(a.__name__)
print(b.__name__)
(lambda x, y=10: x + y)(5)
(lambda x, y=10: x + y)(y=11, x=5)
(lambda x, *, y=10: x + y)(5, y=6)
(lambda x, /, *, y=10: x + y)(5, y=6)
f = lambda x, /, *, y=10: x + y
print(f(5, y=11))
(lambda *args: [i for i in args])(range(5))
(lambda *args: [i for i in args])(*range(5))
(lambda *args: [i+1 for i in args])(*range(5))
(lambda *args: list((i+1 for i in args)))(*range(5))
(lambda *args: (i+1 for i in args))(*range(5))
(lambda *args: {i%3 for i in args})(*range(5))
dict(map(lambda x:(x, x+1), range(5)))
dict(map(lambda x:(str(x), x+1), range(5)))
",".join(map(str, range(5)))
{str(i):i+1 for i in range(5)}
d1 = {k:[] for k in 'abcde'}
print(d1)
d1['a'].append(1)
print(d1)
d1 = dict(map(lambda x: (x, []), 'abcde'))
print(d1)
d1['a'].append(1)
print(d1)
d1 = dict.fromkeys('abcde', [])
print(d1)
d1['a'].append(1)
print(d1)
d1 = {k:[] for k in 'abcde'}
print(d1)
d1['a'].append(1)
print(d1)
d1['f'] = []
d1['f'].append(100)
print(d1)
from collections import defaultdict
d2 = defaultdict(list)
d2['t'].extend(range(5))
print(d2)
from collections import defaultdict
d2 = defaultdict(list)
d2['m'].add(100)
print(d2)
from collections import defaultdict
d2 = defaultdict(set)
d2['m'].add(100)
print(d2)
from collections import defaultdict
d2 = defaultdict(list)
d2['m'].append(100)
print(d2)
from collections import defaultdict
d2 = defaultdict(lambda : list())
d2['m'].append(100)
print(d2)
from collections import defaultdict
d2 = defaultdict(lambda : {100})
print(d2['m'])
print(d2)
字典的值比较
x = ['a', 1, 'b', 20, 'c', 32]
print(sorted(x, key=str))