python - itertools 模块

相关文档

文档 链接

pymotw 链接

无限迭代器

itertools.count()

说明

生成一个无限迭代的数字队列, 只有进行

参数

其实数字以及步幅

start, [step]

返回值

start, start+step, start+2*step, ...

示例

count(10) --> 10 11 12 13 14 ...

from itertools import *
import time

c = count(10,5)
print c

for i in c:
    time.sleep(0.5)
    print i

"""
count(10, 5)
10
15
20
25
30
35
40
45
50
55

Process finished with exit code -1
"""

详细示例

itertools.cycle()

说明

传入一个可迭代对象然后循环遍历此对象

参数

p

返回值

p0, p1, ... plast, p0, p1, ...

示例

cycle(‘ABCD‘) --> A B C D A B C D ...

from itertools import *
import time

c = cycle([1, 2, 3])
print c

for i in c:
    time.sleep(0.5)
    print i

"""
<itertools.cycle object at 0x0000000002A42088>
1
2
3
1
2
3
1
2

Process finished with exit code -1

"""

详细示例

itertools.repeat()

说明

传入一个对象, 以及数字, 遍历此对象指定数字次数

参数

elem [,n]

返回值

elem, elem, elem, ... endlessly or up to n times

示例

repeat(10, 3) --> 10 10 10

from itertools import *
import time

c = repeat(3, 5)
print c

for i in c:
    time.sleep(0.5)
    print i

"""
repeat(3, 5)
3
3
3
3
3

Process finished with exit code 0
"""

详细示例

处理输入序列迭代器

itertools.chain()

说明

传入多个序列, 遍历时将多个序列串联一起进行

参数

p, q, ...

返回值

p0, p1, ... plast, q0, q1, ...

示例

chain(‘ABC‘, ‘DEF‘) --> A B C D E F

from itertools import *

c = chain(range(5), range(3))
print c

for i in c:
    print i

"""
<itertools.chain object at 0x0000000002A77FD0>
0
1
2
3
4
0
1
2

Process finished with exit code 0r
"""

详细示例

itertools.compress()

说明

参数传入一个序列以及一个选择列表,对数据序列基于选择列表进行筛选

参数

data, selectors 

返回值

(d[0] if s[0]), (d[1] if s[1]), ...         

示例

compress(‘ABCDEF‘, [1,0,1,0,1,1]) --> A C E F

from itertools import *

c = compress("hahahahahaha", [1, 0, 1, 0, 1, 0, 1, 0])
print c

for i in c:
    print i

"""
<itertools.compress object at 0x0000000002B01048>
h
h
h
h

Process finished with exit code 0
"""

详细示例

itertools.dropwhile()

说明

创建一个迭代器,只要函数predicate(item)为True,就丢弃iterable中的项,如果predicate返回False,就会生成iterable中的项和所有后续项。

即:在条件为false之后的第一次, 返回迭代器中剩下来的项.

参数

pred, seq

返回值

 seq[n], seq[n+1], starting when pred fails

示例

 dropwhile(lambda x: x<5, [1,4,6,4,1]) --> 6 4 1
def dropwhile(predicate, iterable):
    # dropwhile(lambda x: x<5, [1,4,6,4,1]) --> 6 4 1
    iterable = iter(iterable)
    for x in iterable:
        if not predicate(x):
            yield x
            break
    for x in iterable:
        yield x

from itertools import *

def should_drop(x):
    print ‘Testing:‘, x
    return (x<1)

for i in dropwhile(should_drop, [ -1, 0, 1, 2, 3, 4, 1, -2 ]):
    print ‘Yielding:‘, i

Testing: -1
Testing: 0
Testing: 1
Yielding: 1
Yielding: 2
Yielding: 3
Yielding: 4
Yielding: 1
Yielding: -2

详细示例

itertools.groupby()

说明

按照keyfunc函数对序列每个元素执行后的结果分组(每个分组是一个迭代器), 返回这些分组的迭代器

参数

iterable[, keyfunc]

返回值

sub-iterators grouped by value of keyfunc(v)

示例

chain(‘ABC‘, ‘DEF‘) --> A B C D E F
迭代器         参数            结果                                        例子
ifilter()   pred, seq           elements of seq where pred(elem) is True    ifilter(lambda x: x%2, range(10)) --> 1 3 5 7 9
ifilterfalse()  pred, seq       elements of seq where pred(elem) is False   ifilterfalse(lambda x: x%2, range(10)) --> 0 2 4 6 8
islice()    seq, [start,] stop [, step] elements from seq[start:stop:step]  islice(‘ABCDEFG‘, 2, None) --> C D E F G
imap()      func, p, q, ...     func(p0, q0), func(p1, q1), ...             imap(pow, (2,3,10), (5,2,3)) --> 32 9 1000
starmap()   func, seq           func(*seq[0]), func(*seq[1]), ...           starmap(pow, [(2,5), (3,2), (10,3)]) --> 32 9 1000
tee()       it, n               it1, it2 , ... itn splits one iterator into n
takewhile() pred, seq           seq[0], seq[1], until pred fails            takewhile(lambda x: x<5, [1,4,6,4,1]) --> 1 4
izip()      p, q, ...           (p[0], q[0]), (p[1], q[1]), ...             izip(‘ABCD‘, ‘xy‘) --> Ax By
izip_longest()  p, q, ...       (p[0], q[0]), (p[1], q[1]), ...             izip_longest(‘ABCD‘, ‘xy‘, fillvalue=‘-‘) --> Ax By C- D-

原文地址:https://www.cnblogs.com/shijieli/p/11025224.html

时间: 2024-10-08 20:49:02

python - itertools 模块的相关文章

python, itertools模块

通过itertools模块,可以用各种方式对数据进行循环操作 1, chain() from intertools import chain for i in chain([1,2,3], ('a', 'b', 'c'), 'abcde'): print i chain将可迭代的对象链接在一起,iter1循环完后,接着循环iter2.直到所有的iter循环完. 2, combinations() from intertools import combinations for i in combi

python itertools模块练习

参考 <python标准库> 也可以参考Vamei博客 列表用着很舒服,但迭代器不需要将所有数据同时存储在内存中. 本章练习一下python 标准库中itertools模块 合并 和 分解 迭代器 1.chain() 处理多个序列,而不比构造一个大的,两个合在一起,遍历就好了 >>> for i in chain(range(3),range(5,9)): ... print i ... 0 1 2 5 6 7 8 >>> 2.izip() 类似zip,可以

python itertools 模块讲解

1.介绍itertools 是python的迭代器模块,itertools提供的工具相当高效且节省内存.使用这些工具,你将能够创建自己定制的迭代器用于高效率的循环.- 无限迭代器 itertools包自带了三个可以无限迭代的迭代器.这意味着,当你使用他们时,你要知道要的到底是最终会停止的迭代器,还是需要无限地迭代鞋去.(1)count(初值=0, 步长=1):count 迭代器会返回从传入的起始参数开始的均匀间隔的数值.count 也可以接收指定的步长参数.我们来看一个简单的例子: ''' 遇到

Python itertools模块详解

这货很强大, 必须掌握 文档 链接 http://docs.python.org/2/library/itertools.html pymotw 链接 http://pymotw.com/2/itertools/ 基本是基于文档的翻译和补充,相当于翻译了 itertools用于高效循环的迭代函数集合 组成 总体,整体了解 无限迭代器 复制代码代码如下: 迭代器 参数 结果 例子 count() start, [step] start, start+step, start+2*step, ...

python itertools模块实现排列组合

转自:https://blog.csdn.net/specter11235/article/details/71189486 一.笛卡尔积:itertools.product(*iterables[, repeat]) 直接对自身进行笛卡尔积: import itertools for i in itertools.product('ABCD', repeat = 2): print (''.join(i),end=' ') 输出结果: AA AB AC AD BA BB BC BD CA CB

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学习笔记—itertools模块

这篇是看wklken的<Python进阶-Itertools模块小结> 学习itertools模块的学习笔记 在看itertools中各函数的源代码时,刚开始还比较轻松,但后面看起来就比较费劲... 1.itertools.count(start=0,step=1) 此函数用来创建一个迭代器,生成从n开始的连续整数,如果忽略n,则从0开始计算 如果超出了sys.maxint,计数器将溢出并继续行-sys.maxint-1开始计算 定义: def count(start=0, step=1):

python 高效的 itertools 模块

迭代器的特点是:惰性求值(Lazy evaluation),即只有当迭代至某个值时,它才会被计算,这个特点使得迭代器特别适合于遍历大文件或无限集合等,因为我们不用一次性将它们存储在内存中. Python 内置的 itertools 模块包含了一系列用来产生不同类型迭代器的函数或类,这些函数的返回都是一个迭代器,我们可以通过 for 循环来遍历取值,也可以使用 next() 来取值. itertools 模块提供的迭代器函数有以下几种类型: 无限迭代器:生成一个无限序列,比如自然数序列 1, 2,

python中itertools模块zip_longest函数实现逻辑

最近在看流畅的python,在看第14章节的itertools模块,对其itertools中的相关函数实现的逻辑的实现 其中在zip_longest(it_obj1, ..., it_objN, fillvalue=None)时,其函数实现的功能和内置zip函数大致相同(实现一一对应), 不过内置的zip函数是已元素最少对象为基准,而zip_longest函数是已元素最多对象为基准,使用fillvalue的值来填充 以下是自己总结此函数的大致实现方法,和官方方法不同: 思路大致如此: 找出元素个