python的 map,filter, reduce, enumerate
一, map #基本的map运用都可以用解析去替代,复杂的仍然需要定义函数,利用map去做
map(函数, 序列) 将序列的各项经过函数处理, 然后返回到一个新列表中。 #itertools.imap()
>>> s
['a', 'b', 'c', 'd']
>>> exp1 = map(ord, s) #s 也可以是字符串, 元组, 字典
>>> exp1
[97, 98, 99, 100]
序列的个数根据前面的函数而定, ord()一次接受一个,所以后面只有一个序列。
>>> add = lambda x, y: x+y
>>> map(add, {'a':'djsfld', 'b': 'dgfasg'}, 'fg') #自定义了一个add函数,接受两个参数,所以后面是两个可迭代的对象。
['af', 'bg']
注意,后面的两个对象长度必须一致, map不具有不短和截长的功能。
而zip会将长的多余部分给截去, 如:
>>> zip( {'a':'djsfld', 'b': 'dgfasg'}, 'fgf')
[('a', 'f'), ('b', 'g')] #可以一次循环多个对象,itertools.izip()
在python3* 中,返回的不是列表,而是可迭代对象,可以通过list()函数得到以上结果。
>>> def xixi(x,y):
... if x>y: return x+y
... else: return y
...
>>> map(xixi, 'abcdefg', ['e','a','c','b','f','t','j'])
['e', 'ba', 'c', 'db', 'f', 't', 'j']
二, filter #基本的filter运用都可以用解析去替代, 复杂的仍然要自定义函数,利用filter去做,这也许是map和filter依然存在的原因。
filter(过滤函数, 列表) 将列表中的元素经过函数,如果返回True, 就放到一个新的列表中,如果返回False, 就不放进去。#itertools.dropwhile
filter只能一次处理一个元素。所以后面只有一个序列。
>>> def hehe(x):
... if ord(x)>100:return True
... else: return False
...
>>> filter(hehe, 'av')
'v'
>>> filter((lambda x:x>0), range(-5,5))
[1, 2, 3, 4]
在python3*中返回的不直接是列表,而是一个迭代器。可以用list()查看结果。
三, reduce
对每队元素都应用函数并运行到最后结果。
>>> reduce((lambda x, y: x+y),range(-5,5))
-5
算法是这样的:(((((((((-5+-4)+-3)+ -2)+ -1)+ 0)+ 1)+ 2)+ 3)+ 4) = -5
四, enumerate
s='SAASDFASDF\n'
>>> for i,j in enumerate(s.strip()): 同时返回这个元素以及元素的index
... print i,j
...
0 S
1 A
2 A
3 S
4 D
5 F
6 A
7 S
8 D
9 F
注意:返回的index是整型!!!!!!!!
by freemao
FAFU
free_mao@qq.com
python的 map,filter, reduce, enumerate的更多相关文章
- Python map filter reduce enumerate zip 的用法
map map(func, list) 把list中的数字,一个一个运用到func中,常和lambda一起用. nums = [1, 2, 3, 4, 5] [*map(lambda x: x**2, ...
- Python中map,filter,reduce,zip的应用
事例1: l=[('main', 'router_115.236.xx.xx', [{'abc': 1}, {'dfg': 1}]), ('main', 'router_183.61.xx.xx', ...
- Python【map、reduce、filter】内置函数使用说明(转载)
转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...
- 【转】Python 中map、reduce、filter函数
转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...
- python常用函数进阶(2)之map,filter,reduce,zip
Basic Python : Map, Filter, Reduce, Zip 1-Map() 1.1 Syntax # fun : a function applying to the iterab ...
- Python【map、reduce、filter】内置函数使用说明
题记 介绍下Python 中 map,reduce,和filter 内置函数的方法 一:map map(...) map(function, sequence[, sequence, ...]) -& ...
- python 内置函数 map filter reduce lambda
map(函数名,可遍历迭代的对象) # 列组元素全加 10 # map(需要做什么的函数,遍历迭代对象)函数 map()遍历序列得到一个列表,列表的序号和个数和原来一样 l = [2,3,4,5,6, ...
- 如何在python3.3用 map filter reduce
在3.3里,如果直接使用map(), filter(), reduce(), 会出现 >>> def f(x): return x % 2 != 0 and x % 3 != 0 ...
- Swift map filter reduce 使用指南
转载:https://useyourloaf.com/blog/swift-guide-to-map-filter-reduce/ Using map, filter or reduce to ope ...
- 数组的高阶方法map filter reduce的使用
数组中常用的高阶方法: foreach map filter reduce some every 在这些方法中都是对数组中每一个元素进行遍历操作,只有foreach是没有 ...
随机推荐
- [转] jQuery源码分析-如何做jQuery源码分析
jQuery源码分析系列(持续更新) jQuery的源码有些晦涩难懂,本文分享一些我看源码的方法,每一个模块我基本按照这样的顺序去学习. 当我读到难度的书或者源码时,会和<如何阅读一本书> ...
- hdu 4609 3-idiots
http://acm.hdu.edu.cn/showproblem.php?pid=4609 FFT 不会 找了个模板 代码: #include <iostream> #include ...
- outlook新邮件到达提醒设置以及outlook最小化到托盘设置
有些邮件是需要马上处理的,因此希望能在收到邮件之后马上就知道,但是有不希望频繁的去检查有没有.outlook可以帮我们轻松做到新邮件到达提醒. 一 .设置outlook新邮件到达提醒:选项->电 ...
- powershell小工具,efs加解密三剑客。
powershell efs 加密 解密 列出 decryption list --------前言:我编写这两个脚本的目的,大家不可不知!-------- 1 是为系统管理员,网管员编写 ...
- 国产ProcessOn和国外gliffy的对比区别【原创】
之前一直在用国外的作图工具gliffy,不足之处gliffy是英文的,很多国内相关从业者使用起来就有一定门槛,今天我给大家再推荐一款比gliffy更方便的作图工具ProcessOn,除了绘制UML建模 ...
- RPI学习--WebCam_mplayer
1,安装mplayer $ sudo apt-get install mplayer 2,运行 $ sudo mplayer tv:// 有时会秀逗,绿屏,多试几下就好了,情况未知
- switch… case 语句的用法(二)
总结来说:switch的用法是判断case后面的表达式和switch后面的表达式是否相匹配,一旦case匹配,就会顺序执行后面的程序代码,而不管后面的case是否匹配,直到遇见break.都不匹配找d ...
- Lib New
gacutil /if E:\ThirdParty\RockyLib\Rocky\bin\Release\Rocky.dll gacutil /u Rocky partial class GmailF ...
- IOS导航栏的使用方法
本文是使用纯代码实现一个导航栏的效果.单击按钮并且产生事件.基本思路是: 1.创建一个导航栏(UINavigationBar对象) 2.创建一个导航栏集合(UINavigationItem对象) 3. ...
- poj1141 区间dp+路径
//Accepted 176 KB 47 ms //感谢大神们为我们这群渣渣铺平前进的道路!! //用scanf("%s",s)!=EOF WA到死 #include <cs ...