Python很贴心地将一些常用的功能设置成了内置函数。 这些函数无须从模块中导入,也无须定义就可以在任意位置直接调用。
除了平时我们会用到的一些求字符串长度的简单内置函数,python还给提供了几种相对高级一点的内置函数。善用这些给出的内置函数能够使得代码更加简洁!
lambda函数
lambda函数是用来快速创建一个自定义匿名函数的,省去了平时需要用到的def 结构,例如:
f=lambda x: x*2+1 |
执行结果为7
捕获变量值
有的时候我们在定义匿名函数时,可能希望该函数能使用某变量的值,这样的话可以实现对定义函数的"动态更新",但需要注意的是,匿名函数定义时并不会记录变量的值,而是会在调用该函数时去捕捉变量的值:
c=10 |
map函数
map函数的输入值是一个映射关系和一个序列(列表或者元组或者生成器),利用map和lambda组合可以更加简洁的进行映射值的获取,使得代码更加通俗易懂
str1=map(lambda x:x**2+1,[1,2,3,5]) |
filter函数
filter函数与map函数输入参数相同,区别是filter函数主要用于过滤,它添加了一个限定条件(定义在映射关系中),符合的会被输出,不符合的会被去掉。返回的是过滤后的初始列表中剩下的值:
def f(x): |
返回3和5
reduce函数
reduce函数在python3中被放入了functools模块中。输入参数同样是一个映射与一个序列。但映射函数必须有两个自变量。假定输入函数为f,输入列表中元素为,reduce函数会先计算,将计算值作为新的列表的起始元素,重复进行至只剩下一两个元素求得最后的结果。
#计算4! |
Python高阶函数并不常见。 这是因为总有替代函数可以使用, 但就简洁而言, Python内置函数已经达到了目前可以做到的极致, 而且内置函数使用快速方便, 如果没有特殊要求, 可以考虑使用Python内置函
数
除了这些内置函数以外,python还提供了一个itertool的包实现更加丰富的迭代运算。
可以关注一下chain() cycle(),count(),accumlate()