一, 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的更多相关文章

  1. Python map filter reduce enumerate zip 的用法

    map map(func, list) 把list中的数字,一个一个运用到func中,常和lambda一起用. nums = [1, 2, 3, 4, 5] [*map(lambda x: x**2, ...

  2. Python中map,filter,reduce,zip的应用

    事例1: l=[('main', 'router_115.236.xx.xx', [{'abc': 1}, {'dfg': 1}]), ('main', 'router_183.61.xx.xx', ...

  3. Python【map、reduce、filter】内置函数使用说明(转载)

    转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...

  4. 【转】Python 中map、reduce、filter函数

    转自:http://www.blogjava.net/vagasnail/articles/301140.html?opt=admin 介绍下Python 中 map,reduce,和filter 内 ...

  5. python常用函数进阶(2)之map,filter,reduce,zip

    Basic Python : Map, Filter, Reduce, Zip 1-Map() 1.1 Syntax # fun : a function applying to the iterab ...

  6. Python【map、reduce、filter】内置函数使用说明

    题记 介绍下Python 中 map,reduce,和filter 内置函数的方法 一:map map(...) map(function, sequence[, sequence, ...]) -& ...

  7. python 内置函数 map filter reduce lambda

    map(函数名,可遍历迭代的对象) # 列组元素全加 10 # map(需要做什么的函数,遍历迭代对象)函数 map()遍历序列得到一个列表,列表的序号和个数和原来一样 l = [2,3,4,5,6, ...

  8. 如何在python3.3用 map filter reduce

    在3.3里,如果直接使用map(), filter(), reduce(), 会出现 >>> def f(x): return x % 2 != 0 and x % 3 != 0  ...

  9. Swift map filter reduce 使用指南

    转载:https://useyourloaf.com/blog/swift-guide-to-map-filter-reduce/ Using map, filter or reduce to ope ...

  10. 数组的高阶方法map filter reduce的使用

    数组中常用的高阶方法: foreach    map    filter    reduce    some    every 在这些方法中都是对数组中每一个元素进行遍历操作,只有foreach是没有 ...

随机推荐

  1. MongoDB相关资料

    MongoDB的介绍及安装参考http://www.cnblogs.com/lipan/archive/2011/03/08/1966463.html 安装过程: 第一步:下载安装包:官方下载地址←单 ...

  2. HTML去掉网页IE滚动条

    做了一个页面,与桌面分辨率一样大小,但是在IE全屏(F11)下却显示有滚动条,此教程由软件自学网首发,而火狐确没有.怎么样去掉IE滚动条呢?其实有一个属性就可以解决. 方法1:直接在body里面加上属 ...

  3. hdu 4617 Weapon

    http://acm.hdu.edu.cn/showproblem.php?pid=4617 三维几何简单题 多谢高尚博学长留下的模板 代码: #include <iostream> #i ...

  4. poj 3468 A Simple Problem with Integers 线段树第一次 + 讲解

    A Simple Problem with Integers Description You have N integers, A1, A2, ... , AN. You need to deal w ...

  5. IT公司100题-18-圆圈中最后剩下的数字

    问题描述: n个数字(下标为0, 1, …, n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(当前数字从1开始计数).当一个数字被删除后,从被删除数字的下一个数字开始计数,继续删除 ...

  6. flash 和 第三方程序交互

    一.flash 端 修改 1.flash cs6  修改脚本 为as3 2.修改 按钮 实例 名 (不是sprite列表中的名字  实例名称 和这个名字 是2个) 3.时间轴上 添加代码 当前选择 A ...

  7. goldengate复制过程字符集处理一例

    源端是oracle, al32utf8,表里有乱码,目标端是sybase cp936,两端的DB都不能改字符集,而且源端是目标端的超集,当复制有乱码的数据(非中文或英文数字等),目标端replicat ...

  8. JS内置对象

    字符串对象 <script> //字符串对象 var str = "Hello worldlsgjlsjg"; document.write('string.lengt ...

  9. MongoDB 聚合 (转) 仅限于C++开发

    MongoDB除了基本的查询功能,还提供了很多强大的聚合工具,其中简单的可计算集合中的文档个数, 复杂的可利用MapReduce做复杂数据分析. 1.count count返回集合中的文档数量 db. ...

  10. android 经典下雨效果

    英文原文地址:https://blog.stylingandroid.com/snowfall/ 中文翻译地址:http://www.open-open.com/lib/view/open145226 ...