python——itertools模块

包括创建和使用迭代器的函数。

迭代器是可以记录遍历位置。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

常用函数

itertools模块包括较多关于迭代器创建、合并、切分等操作的函数,这里介绍如下几个。

permutations生成一个迭代对象的全排列; chain连接多个列表或者迭代器;cycle对输入对象生成循环迭代对象;count基于给定初值和步长,进行无限迭代;islice指定起、终点、步长的迭代器。

itertools.permutations(iterable,r=None) --> permutations object
#r表示迭代器中元素的长度
itertools.chain(*iterables) --> chain object
itertools.cycle(iterable) --> cycle object
itertools.count(start=0,step=1) --> count object
itertools.islice(iterable,start,stop,step=1) --> islice object
#类似切片操作,但是输出为迭代器对象。

注意:对于迭代对象的输出,有限迭代对象可以转化为list,直接一次性输出。或者利用循环遍历结果等方法。内置函数next()可以用来输出迭代对象。

示例
permutations
import itertools
data=itertools.permutations('abc')
list(data)
#输出:
"""
[('a', 'b', 'c'),
 ('a', 'c', 'b'),
 ('b', 'a', 'c'),
 ('b', 'c', 'a'),
 ('c', 'a', 'b'),
 ('c', 'b', 'a')]
 """
data=itertools.permutations('001')
list(data)
"""
[('0', '0', '1'),
 ('0', '1', '0'),
 ('0', '0', '1'),
 ('0', '1', '0'),
 ('1', '0', '0'),
 ('1', '0', '0')]
 """
#permutations输出的是输入对象的全排列,因此对于重复元素会出现重复结果,如('0', '0', '1')。
chain
import itertools
itertools.chain(range(5),range(100,105))
#输出为迭代器对象:<itertools.chain at 0x7f01d56d1cc0>
list(itertools.chain(range(5),range(100,105)))
#输出:[0, 1, 2, 3, 4, 100, 101, 102, 103, 104]
list(itertools.chain(range(3),['s','a'],'124'))
#输出:[0, 1, 2, 's', 'a', '1', '2', '4']
cycle
import itertools
for i in itertools.cycle('abc'):
    res.append(i)
    #因为迭代对象无限循环,因此指定输出长度break
    if len(res)==7:break
print(res)
#输出:['a', 'b', 'c', 'a', 'b', 'c', 'a']
count
import itertools
data=itertools.count(10,2)#初值为10,步长为2
#使用循环遍历迭代结果,因为是无限迭代,所以设定大于20则退出
for i in data:
    if i>20:break
    print(i)
#输出:10  12  14  16  18  20
islice
import itertools
list(itertools.islice('abcdefg',2,5))#起始索引2,终止索引5,默认步长1
#输出:['c', 'd', 'e']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值