itertools模块

Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。

无限迭代器

count()会创建一个无限迭代器

import itertools
natuals = itertools.count(1)
for n in natuals:
    print(n)
# 打印根本停不下来

cycle()会把传入的一个序列无限重复下去:

import itertools
natuals = itertools.cycle('ABC')
for n in natuals:
    print(n)
# 也是根本停不下来

repeat()负责把一个元素无限的重复下去,不过如果提供第二个参数就可以限定重复次数:

import itertools
natuals = itertools.repeat('A', 10)
for n in natuals:
    print(n)
# 打印了十次A

无限序列只有在for迭代时才会无限地迭代下去,如果只是创建了一个迭代对象,它不会事先把无限个元素生成出来,事实上也不可能在内存中创建无限多个元素。

无限序列虽然可以无限迭代下去,但是通常我们会通过takewhile()等函数根据条件判断来截取出一个有限的序列:

import itertools
natuals = itertools.count(1)
ns = itertools.takewhile(lambda x: x <= 10, natuals)
# takewhile接受函数和一个可迭代对象,会将迭代对象的值传入函数,返回False则停止迭代
for n in ns:
    print(n)

比较有用的几个函数

chain()可以把以组迭代对象串联起来,形成一个更大的迭代器

for c in itertools.chain('ABC', 'XYZ'):
    print(c)
# 迭代效果:'A' 'B' 'C' 'X' 'Y' 'Z'

groupby()把迭代器中相邻的重复元素跳出来放在一起

转载于:https://www.cnblogs.com/wwg945/p/8977917.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值