Python很贴心地将一些常用的功能设置成了内置函数。 这些函数无须从模块中导入,也无须定义就可以在任意位置直接调用。
除了平时我们会用到的一些求字符串长度的简单内置函数,python还给提供了几种相对高级一点的内置函数。善用这些给出的内置函数能够使得代码更加简洁!

lambda函数

lambda函数是用来快速创建一个自定义匿名函数的,省去了平时需要用到的def 结构,例如:

f=lambda x: x*2+1
f(3)

执行结果为7

捕获变量值

有的时候我们在定义匿名函数时,可能希望该函数能使用某变量的值,这样的话可以实现对定义函数的"动态更新",但需要注意的是,匿名函数定义时并不会记录变量的值,而是会在调用该函数时去捕捉变量的值:

c=10
f=lambda x:x+c
c=30
g=lambda x:x+c
print(f(20),g(20))
#要解决这个问题可以在声明函数时设置变量的默认值
c=10
f=lambda x,c=c:x+c
c=30
g=lambda x,c=c:x+c
print(f(20),g(20))

map函数

map函数的输入值是一个映射关系和一个序列(列表或者元组或者生成器),利用map和lambda组合可以更加简洁的进行映射值的获取,使得代码更加通俗易懂

str1=map(lambda x:x**2+1,[1,2,3,5])
for i in str1:
print(i)

filter函数

filter函数与map函数输入参数相同,区别是filter函数主要用于过滤,它添加了一个限定条件(定义在映射关系中),符合的会被输出,不符合的会被去掉。返回的是过滤后的初始列表中剩下的值:

def f(x):
if x>2:
return x**2+1
else:
pass
str1=filter(f,[1,2,3,5])
for i in str1:
print(i)

返回3和5

reduce函数

reduce函数在python3中被放入了functools模块中。输入参数同样是一个映射与一个序列。但映射函数必须有两个自变量。假定输入函数为f,输入列表中元素为x1,x2,,xn(2n)x_1,x_2,\dots,x_n(2\le n),reduce函数会先计算f(x1,x2)f(x_1,x_2),将计算值作为新的列表的起始元素,重复进行至只剩下一两个元素求得最后的结果。

#计算4!
from functools import reduce
x=[i for i in range(1,5)]
y=reduce(lambda x,y:x*y,x)
print(y)

Python高阶函数并不常见。 这是因为总有替代函数可以使用, 但就简洁而言, Python内置函数已经达到了目前可以做到的极致, 而且内置函数使用快速方便, 如果没有特殊要求, 可以考虑使用Python内置函

除了这些内置函数以外,python还提供了一个itertool的包实现更加丰富的迭代运算。
image.png
可以关注一下chain() cycle(),count(),accumlate()