Python很贴心地将一些常用的功能设置成了内置函数。 这些函数无须从模块中导入,也无须定义就可以在任意位置直接调用。 除了平时我们会用到的一些求字符串长度的简单内置函数,python还给提供了几种相对高级一点的内置函数。善用这些给出的内置函数能够使得代码更加简洁!
lambda函数
lambda函数是用来快速创建一个自定义匿名函数的,省去了平时需要用到的def 结构,例如:
代码语言:javascript复制f=lambda x: x*2 1
f(3)
执行结果为7
捕获变量值
有的时候我们在定义匿名函数时,可能希望该函数能使用某变量的值,这样的话可以实现对定义函数的"动态更新",但需要注意的是,匿名函数定义时并不会记录变量的值,而是会在调用该函数时去捕捉变量的值:
代码语言:javascript复制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组合可以更加简洁的进行映射值的获取,使得代码更加通俗易懂
代码语言:javascript复制str1=map(lambda x:x**2 1,[1,2,3,5])
for i in str1:
print(i)
filter函数
filter函数与map函数输入参数相同,区别是filter函数主要用于过滤,它添加了一个限定条件(定义在映射关系中),符合的会被输出,不符合的会被去掉。返回的是过滤后的初始列表中剩下的值:
代码语言:javascript复制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函数
代码语言:javascript复制#计算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的包实现更加丰富的迭代运算。
可以关注一下chain() cycle(),count(),accumlate()