python itertools模块详解

目录

    • 简介
    • 无穷迭代器
      • count()
      • cycle()
      • repeat()
    • 有限迭代器
      • chain()
      • groupby()
      • accumulate()
    • 组合迭代器
      • product()
      • permutations()
      • combinations()
      • combinations_with_replacement()

简介

itertools,是python的一个内置模块,功能强大,主要用于高效循环创建迭代器。注意一点,他返回的不是list,而是iterator

无穷迭代器

count()

count(start, [step])会创建一个无限迭代器,从当前数字无限循环下去,停止可以按Ctrl+c键
python itertools模块详解_第1张图片

cycle()

cycle( p)会把传入的序列无限的循环打印
python itertools模块详解_第2张图片

repeat()

repeat(elem [,n])可以把一个元素无限循环
python itertools模块详解_第3张图片
也可以添加第二个参数来限制个数
python itertools模块详解_第4张图片

有限迭代器

因为有限迭代器有十多个,这里只列举几个常用的函数

chain()

chain(p,q…)可以把一组迭代对象串联起来,形成一个更大的迭代器
python itertools模块详解_第5张图片

groupby()

groupby(iterable,key=None])把迭代器中相邻的元素按照key函数分组,当key=None时,把相邻的重复元素进行分组
python itertools模块详解_第6张图片
python itertools模块详解_第7张图片

accumulate()

accumulate(iterable [,func])是一个计算迭代器,如果不指定参数函数,将会采取默认的求和函数
python itertools模块详解_第8张图片

也可以指定参数函数,比如求最大值
python itertools模块详解_第9张图片
关于有限迭代器还有更多有趣的函数,可以去官方文档查看
itertools官方文档

组合迭代器

组合操作在算法中经常会用到,因此这里就体现出来itertools模块的便捷性
下面来看看四个组合迭代器的用法

product()

product(p,q,…[repeat=1])得到的是可迭代的笛卡尔积,多个可迭代对象的笛卡尔积可以通过for循环来实现,比如product(a,b)用for循环可以表示为

((i,j) for i in a for j in b)

python itertools模块详解_第10张图片
函数中的repeat参数表示前面可迭代序列的重复次数
比如product(a, repeat=4) 就表示 product(a, a, a, a)

permutations()

permutations(p[, r])返回的是一个长度为 r 的所有可能排列,无重复元素
python itertools模块详解_第11张图片
第二个参数默认为迭代序列长度

combinations()

combinations(p, r)返回的是一个长度为r的组合,它是有序的,无重复元素
python itertools模块详解_第12张图片

combinations_with_replacement()

combinations_with_replacement(p, r)返回的是一个长度为r的组合,它是有序的,元素可以重复
python itertools模块详解_第13张图片

你可能感兴趣的:(随笔,python,itertools,算法,开发语言)