python高阶函数详解
本文结合各种实际的例子详细讲解了Python5个内建高阶函数的使用,能够帮助理解Python的数据结构和提高数据处理的效率,这5个函数分别是:
- map
- reduce
- filter
- sorted/sort
- zip
sorted
语法
sorted(iterable, key=None, reverse=False)
3个参数
sorted()接受3个参数,返回的是一个排序后的列表
可迭代对象
iterablereverse=False,接受一个布尔值,选择是否反转排序结果,默认是False接受一个回调函数
key=None,回调函数只能有一个参数,根据函数的返回值进行排序
demo
help(sorted) # 帮助文档
- 默认不反转
- 对元组、range对象、字典的排序
结果反转
结果反转的意义就是将结果降序排列,因为原本默认是升序的,使用的是reverse=True
理解key
key参数的作用是我们自定义一个函数,然后通过将序列中的元素作用于函数之后再进行排序
在这里我们使用绝对值函数
对比sort()
sort()方法只能对原列表list进行排序,参数和sorted是相同的
结果是将原来的列表直接原地修改,而sorted 是生成新的列表,二者是不同的
zip
zip()是Python中一个非常重要的方法,能够快速的实现很多功能。
语法
zip([iterable,...]) # iterable是一个或者多个可迭代器
- 函数执行的结果在Python3中返回的是一个zip对象,如果需要展示成列表的形式,直接使用list方法展开;展开的结果是列表中嵌套元组的形式
- 在Python2中直接返回的是
元组列表形式
help(zip) # 查看文档
zip接受一个序列
zip中可以接受列表、元组、字符串等形式
zip接受空列表的形式,返回的仍空列表
zip接受多个序列
同时对不同类型的序列进行合并
处理长度不同
当多个序列同时存在,取长度最小的那个序列的长度
zip(*iterables)
我们一般认为该方法是zip的反过程,是一个unzip的过程,举例说明其使用:
复杂例子
下面看一个更为复杂的例子
这个例子的解释为:
[x]是一个列表中含有列表,x本身就是一个列表[x]*3结果为[x,x,x],实际上也是[[4,5,6],[4,5,6],[4,5,6]][*[x]*3]的结果则为[(4,4,4),(5,5,5),(6,6,6)]
zip运用
下面通过zip的实际例子来说明它的应用:
- 列表求和
- 数据合并
- 字典的key-value转换
for循环实现:
使用zip实现: