目录
filter() 函数map() 函数reduce() 函数filter() 函数 小实战今天的这一章节我们来学习一下,Python 中的三个高级函数,也被称之为魔法函数。之所以把他们交的这么高级,主要是因为它们返回的数据类型多数是迭代器。
我们在上一章节有介绍过,迭代器可以提升我们的代码的执行效率、降低内存消耗。所以接下来我们就认识一下这些魔法函数。
filter() 函数
filter() 函数 是python的一个内置函数。
filter() 函数的功能:可以将一个可遍历的对象根据过滤条件,生成一个迭代器。(在python2.7版本,返回的是列表)
filter() 函数的使用方法:
用法:
filter(function, list)
参数介绍:
function:对list的每个item进行条件过滤的定义(主要对第二参数的每个成员进行判断,满足函数的要求,将会进入 filter 生成的迭代器)
list:需要过滤的列表 (其实这里不一定只可以放列表,放入的是可迭代对象)
演示案例如下(过滤出列表中的所有偶数):
def is_even(n): return n % 2 == 0 newlist = filter(is_even, [1, 2, 3, 4, 5, 6]) print(newlist, type(newlist)) # >>> 执行结果如下: # >>>for i in newlist: print(i) # >>> 执行结果如下: # >>> 2 # >>> 4 # >>> 6
PS:需要注意的是,这里的非偶数,虽然会被过滤函数抛弃,但是依然会存在于之前的列表中。
map() 函数
map() 函数 是python的一个内置函数。
map() 函数的功能:对列表中的每一个成员依次执行函数进行判断,将执行的结果放到新 list 中,返回一个 map 对应的对象。
map() 函数的使用方法:
用法:
map(function, list)
参数介绍:
function:对 list 每个 item 进行条件满足的判断
list:需要过滤的列表 (其实这里不一定只可以放列表,放入的是可迭代对象)
演示案例如下(对列表中的每一个成员判断是否大于1):
result = map(lambda x: x>1, [0, 1, 2, 3]) print(result, type(result)) # >>> 执行结果如下: # >>>
reduce() 函数
reduce() 函数 以前是python的一个内置函数,现在不是了。(在python 2.x版本的时候,reduce() 函数可以直接被调用;但是在 python 3.x 的版本中,由于返回的不是一个迭代器,所以需要先执行导入然后才可以继续使用。导入语句 from functools import reduce)
reduce() 函数 的功能:对循环前后的两个数据进行累加或者累乘。(实际上可以通过 lambda 对这两个成员进行任何的处理)
reduce() 函数的使用方法:
用法:
reduce(function, list)
参数介绍:
function:对数据累加/累成的函数
list:需要过滤的列表 (其实这里不一定只可以放列表,放入的是可迭代对象)
演示案例如下(对循环前后的两个数据进行累加或者累乘):
from functools import reduce result = reduce(lambda x, y: x + y, [1, 2, 3]) print(result, "---", type(result)) # >>> 执行结果如下: # >>> 6 ---from functools import reduce result = reduce(lambda x, y: x * y, [1, 3, 5]) print(result, "---", type(result)) # >>> 执行结果如下: # >>> 15 ---
filter() 函数 小实战
scores = [("张三", 89, 90, 59), ("李四", 99, 49, 59), ("赵五", 99, 60, 20), ("王二麻子", 40, 94, 59), ("李雷", 89, 90, 59), ("李莉", 89, 90, 69), ("楚浠", 79, 90, 59), ("Neo", 85, 90, 59), ("Abby", 89, 91, 90)] def handle_filter(a): s = sorted(a[1:]) # 对三科成绩进行排序 # 有 2 科成绩在 80 分以上,并且有 1 科在 60 分以下的 if s[-2] > 80 and s[0] < 60: return True # 有 1 科成绩在 90 分以上,另外 2 科成绩都在 60 分以下 if s[-1] > 90 and s[1] < 60: return True if s[-2] > 80 and sum(s)/len(s) < 60: # 有 1 科成绩在 90 分以上, 且 3 科的平均分在 70 分以下 return True return False newIter = list(filter(handle_filter, scores)) print(newIter) # >>> 执行结果如下: # >>> [("张三", 89, 90, 59), ("李四", 99, 49, 59), ("王二麻子", 40, 94, 59), ("李雷", 89, 90, 59), ("Neo", 85, 90, 59)]
到此这篇关于Python学习之魔法函数(filter,map,reduce)详解的文章就介绍到这了,更多相关Python filter() map() reduce()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?