python高级编程-Part2 高效的迭代器模块itertools

这篇文章将对python内置的迭代器模块做个简单的介绍。

我们已经了解到,可迭代对象和迭代器的关系。这里不妨总结一次,以期待听到不一样的声音,

纯属探讨。可迭代对象是指具有迭代特质的一种类型,而迭代是迭代器提供的一种功能,即每次返回一个元素并且依次返回元素的能力。比如列表或元组就是一个可迭代对象。而可迭代对象经过内置iter方法处理后就会得到迭代器对象:

In [8]: iList = iter([1,2,3])

In [9]: type(iList)
Out[9]: listiterator

In [10]: iList.next()
Out[10]: 1

In [11]: iList.__iter__()
Out[11]: <listiterator at 0x3753550>

上面的内容,有助于理解本篇的主题--python内置的高效迭代器模块itertools

islice:窗口迭代器

itertools.islice(iterable, start, stop, step)将返回建立在子(可迭代)序列上的迭代器。

In [1]: L = [1,2,3,4,5]

In [2]: import itertools

In [3]: iter1 = itertools.islice(L, 1, 5, 2)  #在列表L的位置1(含位置1)到位置5(不含位置5)的
                                            #区间中以步进2选取元素构成可迭代对象(即使仅有
                                               #一个元素),生成对应的迭代器
In [4]: iter1
Out[4]: <itertools.islice at 0x36967c8>
..
In [6]: for x in iter1:
   ...:     print x
   ...:
2
4

tee:往返式迭代器

    itertools.tee(iterable)返回两个独立的建立于同一个可迭代对象之上的迭代器。

In [1]: L = [1,2,3,4,5]

In [2]: from itertools import tee

In [3]: a,b = tee(L)

In [4]: a,b
Out[4]: (<itertools.tee at 0x36afd88>, <itertools.tee at 0x36afdc8>)

In [5]: a.next()
Out[5]: 1

In [6]: a.next()
Out[6]: 2

In [7]: b.next()
Out[7]: 1

实例都在讲述模块的功能,并未展示用途,还请各位如果用到这个模块的话,不吝留下您的需求描述。

不再赘述其他的了,python文档都有介绍实例,这个专题有点水分啦..

推荐参考:

https://docs.python.org/2.7/library/itertools.html

刚刚发现,python 2.7.9发布了。

时间: 2024-11-05 19:35:25

python高级编程-Part2 高效的迭代器模块itertools的相关文章

python高级编程-Part1 生成器和迭代器

迭代器和生成器是python学者们经常谈到的话题,我也不能免俗,因为实在值得总结一下.     迭代器 迭代器是对可迭代对象进行操作,通过next方法一次吐出一个元素的工具.我们用到的for..in..内部使用的就是迭代器功能. 如果要自定义一个迭代器类的话,需要满足下面的条件: 需要在类中定义__iter__方法返回self自身,表示这是一个迭代器: 需要定义next方法来返回迭代的值,其中应该包含StopIteration异常的判断 下面试着写一个自定义迭代器类的例子(模仿自Python高级

python高级编程之生成器表达式和itertools模块

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #生成器表达式和itertools模块 #yield 中可以使用圆括号代替中括号 iter0=(x**2 for x  in range(10)if x%2==0) for iter1 in iter0: print iter1 #结果 """ 0 4 16 36 64 """ #这样的表达式被称为生成器或者gene

python高级编程之迭代器与生成器

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #迭代器与生成器 #--------------------------------------- #迭代器基于2个方法 """ next:返回容器下一个项目 __iter__:返回迭代器本身 """ #通过内建函数和序列来创建 i=iter('abc') print i.next()#a print i.next(

python高级编程之装饰器04

from __future__ import with_statement # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #with和contextlib #对于要确保即使发生一个错误时也能运行一些清理代码而言,try...finally语句很有用,对以下场景,如: """ 关闭一个文件, 释放一个锁 创建一个临时代码补丁 在特殊环境中运行受保护代码 ----------- with语句覆盖

Python高级编程pdf

下载地址:网盘下载 内容简介  · · · · · · <Python高级编程>通过大量的实例,介绍了Python语言的最佳实践和敏捷开发方法,并涉及整个软件生命周期的高级主题,诸如持续集成.版本控制系统.包的发行和分发.开发模式.文档编写等.<Python高级编程>首先介绍如何设置最优的开发环境,然后以Python敏捷开发方法为线索,阐述如何将已被验证的面向对象原则应用到设计中.这些内容为开发人员和项目管理人员提供了整个软件工程中的许多高级概念以及专家级的建议,其中有些内容的意义

python高级编程之(类级):子类内建类型

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #类级 #在2.2中,提出了类型(type0与类(class)统一(请访问:https://www.python.org/download/releases/2.2.3/descintro(可能已经不存在了))-这使内建类型的子类化成为可能,并且添加一个新内建类型object #用于所有内建类的公共祖先 #展示一个名为distinctdict类的代码,与平常的dic

python高级编程:有用的设计模式2

# -*- coding: utf-8 -*- __author__ = 'Administrator' #python高级编程:有用的设计模式 #代理 """ 代理对一个代价昂贵或者远程的资源提供了一个非直接访问的机制 在客户和主意之间,如图.它用来优化对高代价主题的访问,比如,在前一章中描述的memoize装饰器可以被认为是一个代理 ,它还可以用提供到一个主题智能访问,例如,大的视频文件可以封闭在代理中,以避免在用户仅仅请教其标题时就将文件载入到内存中 urllib2出给

python高级编程:有用的设计模式1

# -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#设计械是可复用的,某种程序上它对软件设计中觉问题提供的语言相关解决识方案,最近最流行的书籍:"""gamma.heim.johson和vlissides a.k.a"四人组(gof)"编写的elements of reusable object-oriented software(中文:<设计模式:可复用面向对

python高级编程:有用的设计模式3

# -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#访问者:有助于将算法从数据结构中分离出来"""它与观察者都有相似的目标,都能在不修改代码的情况下扩展指定的类功能,但是访问者更进一步,它将定义一个负责保存数据类,并将算法推进被称为访问者的其他类中.这种行为和mvc范围(请看:http://en.wikipedia.org/wiki/model-view-controller)相当类似,