全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
769 0
2020-12-17
掌握Python中的Itertools模块
如果您一直在使用python,则一定一定遇到过itertools模块。它可能看起来不像,但我可以告诉您它是python上功能最强大的库之一。如果您想编写一个更高效,干净和更多的“ pythonic”代码,我相信itertools是添加到您的武器库中的必备工具。在本文的此处,我们将介绍该库的一些功能,并研究一些示例以帮助我们更好地理解它。
但是,关于itertools的事情是仅仅知道它所包含的函数的定义是不够的。真正的力量在于组合这些功能,以创建快速,内存高效且美观的代码。因此,在这里我们将查看定义以及一些实用的函数示例,以了解其应用。
对于概述,让我们看一下该模块的官方文档说了些什么:
该模块标准化了一套快速的,内存高效的工具的核心集合,这些工具本身或结合使用很有用。它们共同构成了一个“迭代器代数”,从而可以用纯Python简洁高效地构建专用工具。
Itertools为我们提供了三种不同类型的迭代器
无限迭代器
终止迭代器
组合迭代器
现在让我们开始吧
无限迭代器
列表,元组,字典之类的Python迭代器非常详尽。但是迭代器不必在某个时候耗尽,它们可以永远持续下去。让我们看一下无限迭代器的三种类型。
count(start = 0,step = 1):此迭代器从“ start”开始返回值,并无限进行,如果提供了步骤,则将跳过这些值。让我们看一些例子,看看它是如何工作的。
我们还可以将负数和浮点参数传递给此函数。
cycle(iterable ):它从传递的参数返回所有值。当可迭代对象用尽时,它将再次从头开始打印。
现在,使用下一个函数来打印值。
repeat(object [,times] ):这使得迭代器可以一次又一次地返回对象。除非指定时间参数,否则将无限期运行。
此迭代器的常见用法是向map()或zip()提供值流。
这就是无限迭代器。从以上示例中可以明显看出,在某些情况下可以派上用场。现在让我们看一下itertools库的真实内容。终止迭代器。
终止迭代器
这些迭代器用于处理有限序列,并根据所使用的函数生成输出。
accumulate(iterable [,func,*,initial = None ] ):这使得迭代器返回二进制函数的累加结果(通过可选func参数指定)。如果func提供,则它应该是两个参数的函数。输入iterable的元素可以是可以作为参数接受的任何类型func。通过一些示例将更加清楚。
让我们将可选func参数传递给accumulate.
它非常相似functools.reduce(),仅返回最后的累积值,但这又是另一回事!
链(* iterables):这使得迭代器从第一个可迭代的对象返回元素,直到耗尽为止,然后继续进行到下一个可迭代的对象,直到所有可迭代的对象都耗尽。换句话说,它从序列序列中构成一个单一的``序列'',它的功能chain.from_iterabe()以类似的方式工作,但是它使用一个参数作为列表的列表而不是多个列表。
compress(data,selectors ):这使得一个迭代器可以从数据中过滤出仅返回选择器中具有对应元素的元素,该选择器的值为True,当两个元素中的任何一个用完时都会停止。
dropwhile(predicate,iterable ):此迭代器仅在predicatein参数首次返回false之后才开始返回字符。
filterfalse(predicate,iterable ):这使得迭代器可以过滤来自iterable的元素,仅返回谓词为的元素False。如果谓词为None,则返回错误的项目。
groupby(iterable,key = None):这使得迭代器可以从iterable返回连续的键和组。的关键是计算每个元素的密钥值的函数。如果未指定或为None,则键默认为标识函数,并返回不变的元素。
islice(iterable,start,stop [,step ] ):此迭代器有选择地从作为参数传递的可迭代容器中返回值。与常规切片不同,它不支持负值。
starmap(function,iterable):此迭代器将一个函数和一个元组列表作为参数,并根据函数从列表中的每个元组返回值。
takewhile(predicate,iterable ):只要谓词为true,这就会使迭代器从iterable返回元素。与的相反dropwhile。
tee(iterable,n = 2):此简单函数从单个iterable中返回n个独立的迭代器。如果未传递n,则默认值为n。
zip_longest(* iterables,fillvalue = None ):这使得一个迭代器可以聚合每个迭代器中的元素。如果可迭代项的长度不均匀,则用填充缺失值fillvalue。迭代一直持续到最长的可迭代耗尽为止。
这些都是模块提供的所有终止迭代器。您可以清楚地看到这些迭代器提供的各种功能。这些可以在您的代码中使用,以使其更短,更有效,也更“ pythonic”。
我希望您发现这些解释易于理解,并且这些示例可以帮助您理解所有这些。随着您的前进,您会发现这些功能在解决问题方面的更多美丽应用。
题库
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群