Python中的map函数非常有用,在字符转换和字符遍历两节都出现过,现在,它又出现了,会给我们带来什么样的惊喜呢?是不是要告诉我们,map是非常棒的,以后要多找它玩呢?

具体的实例

我们需要在目录中遍历,包括子目录(哈哈),找出所有后缀为:rmvb ,avi  ,pmp 的文件。(天哪?!你要干什么?这可是我的隐私啊~~)

import os

def anyTrue(predicate, sequence):
    return True in map(predicate, sequence)

def filterFiles(folder, exts):
    for fileName in os.listdir(folder):
        if os.path.isdir(folder + '/' + fileName):
            filterFiles(folder + '/' + fileName, exts)
        elif anyTrue(fileName.endswith, exts):
            print fileName

exts = ['.rmvb', '.avi', '.pmp']
filterFiles('/media/Personal/Movie', exts)

输出结果

来看看有什么好东东:

[66影视www.66ys.cn]迷失第四季04.rmvb
[迷失.第4季].Lost.S04E00.rmvb
[迷失Lost第四季][第02集][中文字幕].rmvb
《迷失Lost第四季》第05集[中文字幕].rmvb
《迷失Lost第四季》第06集[中文字幕].rmvb
《迷失Lost第四季》第07集[中文字幕].rmvb
天赐第2季01.rmvb
天赐第2季02.rmvb
天赐第2季03.rmvb
天赐第2季04.rmvb
天赐第2季05.rmvb
影视帝国(bbs.cnxp.com).美丽心灵.A.Beautiful.Mind.2001.CD1.rmvb
( ... 太多了,不要全输出来吧~~)

扩展

CookBook一书中,提供的是itertools.imap来实现对字符串的过滤。imap和map不同的是,imap返回的是一个iteration对象,而map返回的是一个list对象。代码如下:

import itertools
def anyTrue(predicate, sequence):
    return True in itertools.imap(predicate, sequence)
def endsWith(s, *endings):
    return anyTrue(s.endswith, endings)

imap 等价于:

def imap(function, *iterables):
         iterables = map(iter, iterables)
         while True:
             args = [i.next() for i in iterables]
             if function is None:
                 yield tuple(args)
             else:
                 yield function(*args)

Python 天天美味系列(总)

Python 天天美味(14) - splitlines

Python 天天美味(15) - Python正则表达式操作指南(re使用)(转)

Python 天天美味(16) - 过滤字符串的技巧,map与itertools.imap

Python 天天美味(17) - open读写文件

Python 天天美味(18) - linecache.getline()读取文件中特定一行

...

本文转自CoderZh博客园博客,原文链接:http://www.cnblogs.com/coderzh/archive/2008/05/09/1190173.html,如需转载请自行联系原作者

Python天天美味(16) - 过滤字符串的技巧,map与itertools.imap相关推荐

  1. Python天天美味(17) - open读写文件

    Python中文件操作可以通过open函数,这的确很像C语言中的fopen.通过open函数获取一个file object,然后调用read(),write()等方法对文件进行读写操作. 1.open ...

  2. Python天天美味(5) - ljust rjust center

    Python中打印字符串时可以调用ljust(左对齐),rjust(右对齐),center(中间对齐)来输出整齐美观的字符串,使用起来非常简单,包括使用第二个参数填充(默认为空格).看下面的例子就会明 ...

  3. Python天天美味(25) - 深入理解yield

    yield的英文单词意思是生产,刚接触Python的时候感到非常困惑,一直没弄明白yield的用法.只是粗略的知道yield可以用来为一个函数返回值塞数据,比如下面的例子: def  addlist( ...

  4. Python天天美味(35) - 细品lambda

    lambda函数也叫匿名函数,即,函数没有具体的名称.先来看一个最简单例子: def f(x):     return x**2 print f(4) Python中使用lambda的话,写成这样 g ...

  5. Python天天美味(28) - urlopen

    一.打开一个网页获取所有的内容  from urllib import urlopen doc = urlopen("http://www.baidu.com").read() p ...

  6. Python天天美味(22) - 拷贝对象(深拷贝deepcopy与浅拷贝copy)

    Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块. 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deep ...

  7. Python天天美味(32) - python数据结构与算法之堆排序

    1. 选择排序 选择排序原理是先选出最小的数,与第一个数交换,然后从第二个数开始再选择最小的数与第二个数交换,-- def selection_sort(data):     for i in ran ...

  8. Python天天美味(21) - httplib,smtplib

    例一:使用httplib访问某个url然后获取返回的内容: import httplib conn=httplib.HTTPConnection("www.cnblogs.com" ...

  9. Python天天美味(23) - enumerate遍历数组

    其他语言中,比如C#,我们通常遍历数组是的方法是: for (int i = 0; i < list.Length; i++) {     //todo with list[i] } 在Pyth ...

最新文章

  1. 神经网络模拟条件反射
  2. HttpURLConnection总结
  3. 2019ICPC(上海) - Spanning Tree Removal(构造)
  4. android 自定义loading,android_自定义Loading框
  5. mybatis-plus 查询,删除
  6. 修改DNS的Linux脚本,Shell脚本-配置网络
  7. 仰望星空后,更将脚踏实地!
  8. linux中gedit中定义变量,linux中的gedit
  9. 【华为云技术分享】漫谈LiteOS-端云互通组件-MQTT开发指南(上)
  10. Android 系统(165)---在apns-conf文件中配置一个read_only字段,使APN不可被编辑
  11. layui可以动态添加div吗_乳化剂是什么?可以添加到护肤品里吗?
  12. bootstrap带图标的按钮与图标做连接
  13. [zz] 海洋环境的光能传递
  14. 2020年5月全国县以上行政区划代码、城市经纬度查询、国内地区经度纬度查询工具
  15. pandas已知数值怎么找位置_pandas.dataframe中根据条件获取元素所在的位置方法(索引)...
  16. (13.1.1)PMBOK之一:运营,项目、项目集、项目组合、组织战略及其管理
  17. 模拟量输出模块支持西门子三菱PLC接DCS控制系统
  18. 消费税简介、消费税税目 、消费税税率 、消费税计算、综合练习
  19. 网络速率方面的知识(Kbps Mbps KB/s Mb/s Kb/s等)
  20. VS2022 与 C语言:初学者

热门文章

  1. DT时代,国内大数据分析的发展现状是什么?
  2. 简单一道数学题 剿灭100%垃圾邮件
  3. 智能手机争霸赛:三星是如何战胜苹果的?
  4. 2020 GMCPC粤澳赛 心得反思
  5. 集丰照明|无主灯智能照明设计,从构想到实现的“八步走”
  6. ASEMI-US1M是什么二极管,US1M二极管分正负极吗
  7. 七田式英语学习法的 7 条原则
  8. java倒序输出数字的方法
  9. 微信小程序-----身份证校验
  10. 股票价格趋势预测与量化投资案例可视化演示系统(附代码)