Python基础:递归、匿名函数和内置函数
1、递归求阶乘
def sumR(a):
if a == 0:
return 1
return a * sumR(a - 1)
print(sumR(100))
2、lambda表达式:化简代码
fun = lambda : 100
print(fun, fun())
# <function <lambda> at 0x000001BE62A03E18> 100
计算a+b
fun = lambda a, b: a + b
print(fun(1, 2))
3、lambda的参数形式
fun1 = lambda : 100 # 无参数
print(fun1())
fun2 = lambda a : a # 一个参数
print(fun2('Hello'))
fun3 = lambda a, b, c=10 : a + b + c # 默认参数
print(fun3(1, 2))
fun4 = lambda *args : args # 可变参数*args
print(fun4(1, 2, 3))
fun5 = lambda **kwargs : kwargs # 可变参数**kwargs
print(fun5(name='TOM', age=23))
4、lambda的应用
带判断的lambda
fun = lambda a, b : a if a > b else b
print(fun(100, 20))
列表数据按字典key的值排序
stu = [
{'name': 'TOM', 'age': 23},
{'name': 'XiaoM', 'age': 22},
{'name': 'Jack', 'age': 24},
]
stu.sort(key=lambda x: x['age'], reverse=True)
print(stu)
5、高阶函数
abs_fun = lambda a : abs(a)
sum_num = lambda a, b, f : f(a) + f(b)
print(sum_num(-1, 2, abs_fun))
6、内置高阶函数
map(func, lst):将func作用于lst
list1 = [1, 2, 3, 4, 5, 6]
fun = lambda a : a ** 2
result = map(fun, list1)
print(list(result))
reduce(func, lst):每次func结果继续和lst下一个元素做累计
import functools
list1 = [1, 2, 3, 4, 5, 6]
fun = lambda a, b : a * b
result = functools.reduce(fun, list1)
print(result)
filter(func, lst):过滤序列,过滤不符合条件的元素
list1 = [i for i in range(10)]
fun = lambda a : a % 2 == 0
result = filter(fun, list1)
print(list(result))