Python---7.高阶函数(函数工具)
来源:互联网 发布:网络用语马克啥意思 编辑:程序博客网 时间:2024/06/05 18:41
一 map(function, Iterable) 映射操作到可迭代对象
map()函数接收两个参数,一个是函数,另一个是可迭代的对象(如果不理解什么是可迭代对象,可以先理解为列表元组等这类可以用for in 遍历的对象),map函数将参数函数依次作用于可迭代对象的每一个元素,并将结果作为一个新的可迭代对象进行返回。
例:将列表中的成绩每个都加两分
>>>score = [45, 71, 78, 88, 60, 92]>>>def func(x):... x = x + 2... return x>>>map(func, score) <map object at 0x000001A28166EDA0> #返回一个可迭代的map对象>>>results = list(map(func, score)) #将可迭代的map对象装换成列表>>>results[47, 73, 80, 90, 62, 94] #可知每个元素都加了2
当然,像例中的func()主体为单一表达式的简单函数,可以用lambda表达式替代,能有效减少代码量
>>>score = [45, 71, 78, 88, 60, 92]>>>results = list(map(lambda x : x+2, score))>>>results[47, 73, 80, 90, 62, 94]>>>name = ['Tom', 'Tony', 'Amy'] #将字符串变为大写>>>print(list(map(lambda s:s.upper(), name)))['TOM', 'TONY', 'AMY']
二 filter() 从可迭代对象中选择过滤项
filter()函数主要用于过滤函数作用于可迭代对象后返回值为True的元素,并返回一个可迭代对象
#过滤成绩中小于60的成绩>>>score = [44, 55, 66, 77]>>>l = filter(lambda x: x>=60, score)>>>l<filter object at 0x000001A28166E400>>>>print(list(l))[66, 77]
三 functools.reduce()合并迭代项
假设有一个列表l = [1, 2, 3, 4, 5, 6, 7], 现在想要计算l元素的和,利用reduce()函数可以这样写:
>>>import functools>>>l = [1, 2, 3, 4, 5, 6, 7]>>>sum = functools.reduce(lambda x, y: x + y, l)>>>sum28
也许你会说用sum(l)岂不是更方便,是的,但是如果是要计算元素的乘积,使用reduce()就非常容易
import functoolss = functools.reduce(lambda x, y:x*y, l)print(s)###################运行结果:5040——————————————————————————————————————#连接字符串列表中的没个字符元素l2 = ['a', 'b', 'c', 'd']str1 = functools.reduce(lambda x, y:x+y, l2)print(str1)###运行结果'abcd'
四 sorted() 自定义排序函数
(这个函数是从廖雪峰老师的网站上看的)
Python内置的sorted()函数就可以对list进行排序:
>>> sorted([36, 5, -12, 9, -21])[-21, -12, 5, 9, 36]
sorted()函数也是一个高阶函数,它还可以接收一个参数key函数来实现自定义的排序,例如按绝对值大小排序:
sorted([36, 5, -12, 9, -21], key=abs)[5, 9, -12, -21, 36]
key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。对比原始的list和经过key=abs处理过的list:
key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序。对比原始的list和经key=abs处理过的list:
list = [36, 5, -12, 9, -21]keys = [36, 5, 12, 9, 21]
然后sorted()函数按照keys进行排序,并按照对应关系返回list相应的元素:
keys排序结果 => [5, 9, 12, 21, 36] | | | | |最终结果 => [5, 9, -12, -21, 36]
传入key函数,可实现忽略大小写的排序:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)['about', 'bob', 'Credit', 'Zoo']
如果妥善使用高阶函数和lambda表达式,可以一定程度上节省我们的工作量。
小结
- 以上是自己学python时的一些笔记,感觉写在本上不方便,正好利用闲暇时间腾到csdn上。
- 自己的总结,如果有那些地方不合理或有有误,请指正。
- 知识体系图:[Python3基础
阅读全文
1 0
- Python---7.高阶函数(函数工具)
- python高阶函数
- python 高阶函数
- python高阶函数
- Python高阶函数
- python 高阶函数
- python高阶函数
- Python高阶函数
- python 高阶函数
- python 高阶函数
- python高阶函数
- python高阶函数
- python---高阶函数
- Python高阶函数
- Python 高阶函数
- python高阶函数
- python 高阶函数
- python 高阶函数
- PnP 单目相机位姿估计(一):初识PnP问题
- 详解KMP算法
- UVA.10820 Send A Table (欧拉函数)
- caffe的再次编译
- GDI常用函数
- Python---7.高阶函数(函数工具)
- HDU
- 简单python逐行读取文件中的内容
- 很好的java并发和多线程学习博客
- Qt同时实现多个动画效果
- 实验楼_TCP/IP网络协议基础_Note03_S7S8
- K-means聚类算法及变种
- 基于QT 5.8.0 for Android 的 Windows 10 开发环境搭建
- FYN OI奋斗之路1~