python中filter(),map()和reduce()的用法及区别
先看filter()方法
print(list(filter(lambda n : n % 2 == 1, range(20))))
# 结果 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
这里如果用filter的话,说明匿名函数lambda给出的是个筛选条件,从1到19中筛选出奇数来。
filter将传入的函数依次作用到序列的每个元素,True则返回 False则不返回。
再看map()方法
print(list(map(lambda n : n % 2 == 1, range(20))))
# 结果 [False, True, False, True, False, True, False, True, False,
True, False, True, False, True, False, True, False, True, False, True]
用map的话,就好像变成了它判断对错的条件,只打印true和false。
print(list(map(lambda x: x + 1, range(10))))
# 结果 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
map一般的用法,参数有一个函数一个序列,将右边的序列经过左边的函数变换,生成新的序列。
最后看reduce()方法
reduce是一个累加函数,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。
这个函数并不是很常用,在python3中已将其从全局空间移除。
现被放置在functools的模块里,用之前需要引入 from functools import reduce
from functools import reduce my_reduce = reduce(lambda x, y: x + y, range(10))
print(my_reduce)
# 结果是45 是将0到9相加
reduce的另外一个用法,列表去重
ids = [1,4,3,3,4,2,3,4,5,6,1]
func = lambda x,y:x if y in x else x + [y]
reduce(func, [[], ] + ids)
python中filter(),map()和reduce()的用法及区别的更多相关文章
- Python 中的map、reduce函数用法
#-*- coding:UTF-8 -*- #map()函数接受两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回 def f(x): retu ...
- python中的map、reduce、filter、sorted函数
map.reduce.filter.sorted函数,这些函数都支持函数作为参数. map函数 map() 函数语法:map(function, iterable, ...) function -- ...
- Python中的map( )和reduce( )
1.变量可以指向函数,也可以使用变量和参数的形式完成函数调用. 2.那么函数名是什么呢?函数名其实就是指向函数的变量!对于abs()这个函数,完全可以把函数名abs看成变量,它指向一个可以计算 ...
- Python 中的map和reduce学习笔记
map和reduce都是Python中的内置函数 map函数接受两个参数,第一个参数是函数,第二个参数是列表,将函数依次作用于列表中的元素,并返回一个元素 reduce同样以函数和列表作为参数,区别在 ...
- Python中 filter | map | reduce | lambda的用法
1.filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tupl ...
- Python中的map和reduce函数简介
①从参数方面来讲: map()函数: map()包含两个参数,第一个是参数是一个函数,第二个是序列(列表或元组).其中,函数(即map的第一个参数位置的函数)可以接收一个或多个参数. reduce() ...
- python之lambda、filter、map、reduce的用法说明
python中有一些非常有趣的函数,面试的时候可能会遇到.今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,m ...
- python中filter、map、reduce的区别
python中有一些非常有趣的函数,今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,map,reduce为内 ...
- python之lambda、filter、map、reduce的用法说明(基于python2)
python中有一些非常有趣的函数,面试的时候可能会遇到.今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,m ...
随机推荐
- tomcat和nginx的使用
1.下载tomcat,配置conf/server.xml,在Host节点下添加Context节点,指定程序目录: <Context path="/ol" docBase=&q ...
- web front end stack web 前段技术概览
https://github.com/unruledboy/WebFrontEndStack
- VS2008编译错误:error C2065: 'PMIB_TCPSTATS' : undeclared identifier c:\program files (x86)\microsoft sdks\windows\v7.0a\include\iphlpapi.h 411
安装了VS2008编译之前的程序,结果出现了编译错误,以为是VS2008的Sp1补丁没装好,重装补丁后还是不行,编译错误如下: 双击错误会定位在iphlpapi.h中, 一个可行的解决办法是:把iph ...
- js跟随的广告
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- eclipse 搜索 正则表达式
1.换行搜索,如下: \.dyform\([\r]*[\s]*\{
- Binary Numbers
时空限制 Time Limit:1000ms Resident Memory Limit:1024KB Output Limit:1024B 题目内容 Given a positive integer ...
- 执行RF设置顶级测试套件的名称
场景1:通过pybot进行单个output文件情况下设置 -N --name name 设置顶级测试套件的名称.名称中的下划线将转换为空格. 默认名称为执行的数据源的名称. 场景2:通过rebot进行 ...
- ubuntu11.10 64bit 编译android 4.0
前言: 据说google内部使用的的ubuntu版本始终是10.4, 而我一直使用的编译2.3Gingerbread的 11.04下补充安装uuid-dev和liblzo2-dev两个库就可以直接编译 ...
- STL——配接器(adapters)
一.配接器 <Design Patterns>一书提到23个最普及的设计模式,其中对adapter样式的定义如下:将一个class的接口转换为另一个class 的接口,使原本因接口不兼容而 ...
- C++播放wav音乐和音效
1. #include <mmsystem.h>#pragma comment(lib,"winmm.lib")PlaySound(TEXT("c:\\te ...