python itertools 模块讲解

作者: 我爱学python | 来源:发表于2019-04-30 20:49 被阅读8次

1、介绍

itertools 是python的迭代器模块,itertools提供的工具相当高效且节省内存。

使用这些工具,你将能够创建自己定制的迭代器用于高效率的循环。

- 无限迭代器

 itertools包自带了三个可以无限迭代的迭代器。这意味着,当你使用他们时,你要知道要的到底是最终会停止的迭代器,还是需要无限地迭代鞋去。

(1)count(初值=0, 步长=1):count 迭代器会返回从传入的起始参数开始的均匀间隔的数值。count 也可以接收指定的步长参数。我们来看一个简单的例子:

(2)islice(count(10), 5):从 10 开始,输出 5 个元素后结束。islice 的第二个参数控制何时停止迭代。但其含义并不是”达到数字 5 时停止“,而是”当迭代了 5 次之后停止“。

(3)cycle:这里我们创建了一个 for 循环,使其在三个字母 XYZ 间无限循环。当然,我们并不真地想要永远循环下去,所以我们添加了一个简单的计数器来跳出循环。

- 可终止迭代器

(1)accumulate(可迭代对象[, 函数])

   accumulate 迭代器将返回累计求和结果,或者传入两个参数的话,由传入的函数累积计算的结果。默认设定为相加,我们赶快试一试吧:

 这里,我们 导入了 accumulate,然后传入 10 个数字,0-9。迭代器将传入数字依次累加,所以第一个是 0 ,第二个是 0+1, 第三个是 1+2,如此下去。现在我们导入 operator 模块,然后添加进去:

 这里我们传入了数字 1-4 到 accumulate 迭代器中。我们还传入了一个函数:operator.mul,这个函数将接收的参数相乘。所以每一次迭代,迭代器将以乘法代替除法(1×1=1, 1×2=2, 2×3=6, 以此类推)。

  accumulate 的文档中给出了其他一些有趣的例子,例如贷款分期偿还,混沌递推关系等。这绝对值得你花时间去看一看。

(2)chain(*可迭代对象)

    chain 迭代器能够将多个可迭代对象合并成一个更长的可迭代对象。实际上,我参与的一个项目中最近就需要这一功能。我有一个列表,里面已经包含一些元素,接着想把另外两个列表添加到最初那个列表中。注意,我们想添加的是两个列表的元素。最初,我是这样做的:

    方式一: 

  这并不是我想要的。itertools 模块提供一个优雅得多的方法用chain 来合并这些列表:

    方式二:

  许多聪明的读者可能想到了,实际上不使用 itertools,也有其他方法能够实现这一要求。你可以这样做:

    方式三:

这些方法当然都是可行的。在我知道 chain 之前,我可能会这样做,但我个人认为这个例子中, chain 更为优雅,也更容易理解。

相关文章

  • python itertools 模块讲解

    1、介绍itertools 是python的迭代器模块,itertools提供的工具相当高效且节省内存。使用这些工...

  • python itertools 模块讲解

    1、介绍 itertools 是python的迭代器模块,itertools提供的工具相当高效且节省内存。 使用这...

  • python itertools

    PYTHON-进阶-ITERTOOLS模块小结

  • 每周一个 Python 模块 | itertools

    系列文章列表:每周一个 Python 模块 | functools Python 标准库模块 itertools ...

  • itertools

    python 模块itertools 提供了非常有用的用于操作迭代对象的函数。 首先,我们看看itertools...

  • Day16内建模块itertools&urllib

    itertools Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。首先,我们看看...

  • itertools

    Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。 首先,我们看看itertools...

  • python学习-itertools模块

    Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。 首先,我们看看itertools...

  • Python的itertools模块

    python的自建模块itertools提供了非常有用的用于操作迭代对象的函数。 首先,我们看看itertools...

  • itertools.combinnations

    Python itertools模块combinations方法 - FENG4Y - 博客园liaoxuefen...

网友评论

    本文标题:python itertools 模块讲解

    本文链接:https://www.haomeiwen.com/subject/xmrbnqtx.html