Python itertools模块详解

本文详细介绍了Python的itertools模块,包括合并迭代器chain()与izip()、切分迭代器islice()、复制迭代器tee()、Map迭代器、产生新迭代器、过滤迭代器以及Group迭代器的使用方法和示例。通过这些工具,可以更高效地处理可迭代对象,实现内存节省和灵活操作。
摘要由CSDN通过智能技术生成

该模块包含了一系列处理可迭代对象(sequence-like)的函数,从此迭代更任性,简要介绍,原文见Python itertools模块详解

迭代器有一些特点,比如lazy,也就是只有用到的时候才读入到内存里,这样更快更省内存;比如只能调用一次,会被消耗掉。

import itertools as itls

合并迭代器: chain()与izip()

chain()函数接收n个可迭代对象,然后返回一个他们的合集的迭代器,纵向合并,上例子。

for i in itls.chain([1,2,3],['a','b','c']):
    print i,
1 2 3 a b c

izip()函数接收n个可迭代对象,然后将其合并成tuples,横向合并,功能类似zip(),只是返回的是iterator,而不是list。

for i, j in itls.izip([1,2,3],['a','b','c']):
    print i, j
1 a
2 b
3 c

切分迭代器: islice()

islice()函数接收一个迭代器,然后返回其切片,类似于listslice切片操作。参数有startstopstep,其中startstep参数时可选参数。

print "Stop at 5:"
for i in itls.islice(itls.count(),5):
    print i,
Stop at 5:
0 1 2 3 4
print "Start at 5, Stop at 10:"
for i in itls.islice(itls.count(),5,10):
    print i,
Start at 5, Stop at 10:
5 6 7 8 9
print "By tens to 100:"
for i in itls.islice(itls.count(),0,100,10):
    print i,
By tens to 100:
0 10 20 30 40 50 60 70 80 90

复制迭代器: tee()

与Unix里tee方法语意一样,这里接收一个迭代器,然后返回n个(default 2)一样的迭代器。

r = itls.islice(itls.count(),4)
i1, i2, i3 = itls.tee(r,3) # i1 and i2, like a copy

for i<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值