匿名函数
如果使用lambda(匿名)函数,map( )函数和reduce( )函数还能进一步简化.lambda函数能实现普通一样的功能,能传入参数,也能返回运算结果;不同的是lambda函数没有函数名,通常只有一行的表达式,函数的复杂程度也有限.
#匿名函数的关键字为 lambda 冒号前面是形参 冒号后面是返回值
from functools import reduce
def fun(*args, **kwargs):
return args, kwargs
print(fun([1, 2, 3, 4, 5]))
print(lambda *args, **kwargs: (args, kwargs))
def add(x, y):
return x + y
print(reduce(lambda x, y: x + y, [1, 2, 3, 4]))
可以看到,使用lambda函数可以明显简化我们的代码
# def mypow(x):
# return x ** 2
print(list(map(lambda x:x**2,range(5))))
# def is_odd(num):
# return num %2 ==0
print(list(filter(lambda x:x%2==0,range(10))))
匿名函数练习
"""
# 问题描述: 有一个整数列表(10个元素), 要求调整元素顺序,
# 把所有的奇数放在前面, 偶数放在后面,
"""
import random
li = [random.randint(1,10) for i in range(10)]
print(sorted(li,key=lambda x: 1 if x % 2==0 else 0))
print(sorted(li,key=lambda x: x%2==0))