1、 匿名函数lambda
python中允许使用lambda关键字定义一个匿名函数。所谓的匿名函数就是说使用一次或者几次之后就不再需要的函数,属于“一次性”函数。
#例1:求两数之和
f = lambda x, y: x + y
print(f(5, 1))
#例2:求平方和
print((lambda x, y: x**2 + y**2) (3, 4)) #执行结果6 25
2、关键字 yield
yield可以将函数执行的中间结果返回但是不结束程序。
yield关键字可以把一个函数变成一个生成器(generator)。
实现一个range函数
>>> def fun(x):
... i = 0
... while i<x:
... yield i
... i+=1
...
>>> for i in fun(7):
... print(i)
...
0
1
2
3
4
5
6
实现斐波那契数列
>>> def fab(x):
... a, b, n = 0, 1, 0
... while n<x:
... a, b = b, a+b
... yield b
... n += 1
...
>>> for i in fab(10):
... print(i)
...
1
2
3
5
8
13
21
34
55
89
3、遍历函数(map)
map函数用于遍历序列。
>>> def func(a, b):
... return a+b
...
>>> li = [1,2,3,4]
>>> def func(a):
... return a+100
...
>>> print(list(map(func, li)))
[101, 102, 103, 104]
>>> li = [1,2,3,4]
>>> print(list(map(lambda x: x**2, li)))
[1, 4, 9, 16]
>>> li = [1,2,3,4]
>>> lo = [5,6,7,8]
>>> print(list(map(lambda x, y: x**2 + y**2, li, lo)))
[26, 40, 58, 80]
#学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
>>> li = [1,2,3,4,5,6,7,8,9]
>>> print(list(map(lambda x: x > 5, li)))
[False, False, False, False, False, True, True, True, True]
4、筛选函数(filter)
筛选函数用于对序列中的元素进行筛选,最终获取符合条件的序列。
>>> li = [1,2,3,4,5,6,7,8,9]
>>> print(list(filter(lambda x: x>5, li)))
[6, 7, 8, 9]
5、累计函数(reduce)
对序列中的所有函数进行类操作。
>>> from functools import reduce
>>> li = [1,2,3,4,5]
>>> reduce(lambda a, b: a+b, li)
15<br>#第三个参数为初始值,在此值之上进行累计
>>> reduce(lambda a, b: a+b, li, 100)
115
>>>