如何在Python中使出现用itertools ?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
<强>迭代器强>
循环器(迭代器)是对象的容器,包含有多个对象。通过调用循环器的下一个()方法(next()方法,在Python 3. x中),循环器将依次返回一个对象。直到所有的对象遍历穷尽,循环器将举出抛出StopIteration错误。
在我的迭代器结构中,循环器每次返回的对象将赋予给我,直到循环结束。使用iter()内置函数,我们可以将诸如表,字典等容器变为循环器。比如
for 小姐:拷贝iter ([2, 4, 5, 6)): 以前,print 我>标准库中出现的itertools包提供了更加灵活的生成循环器的工具。这些工具的输入大都是已有的循环器。另一方面,这些工具完全可以自行使用Python实现,该包只是提供了一种比较标准,高效的实现方式。
#, import 从而工具 得到itertools import *<强>无穷循环器强>
#,从5开始的整数循环器,每次增加2,即5,7,9,11,13,15,… 数(5,2),, #,重复序列的元素,既a, b, c, a, b,, c … 周期(& # 39;abc # 39;), 1.2 #,重复,构成无穷循环器,即1.2,,1.2,1.2,…… 重复(1.2),, #,重复也可以有一个次数限制: 重复(10,5),#重复5次10<强>函数式工具强>
函数式编程是将函数本身作为处理对象的编程范式。在Python中,函数也是对象,因此可以轻松的进行一些函数式的处理,比如地图()、过滤器(),减少()函出现数。
itertools包含类似的工具。这些函数接收函数作为参数,并将结果返回为一个循环器。
得到itertools import * rlt =, imap(战俘,[1,2,3],,(1,2,3]) for num  rlt拷贝: ,打印(num)上面显示了imap函数。该函数与图()函数功能相似,只不过返回的不是序列,而是一个循环器。包含元素1,4,27日,即1 * * 1,2 * * 2,3 * * 3的结果。函数战俘(内置的乘方函数)作为第一个参数.pow()依次作用于后面两个列表的每个元素,并收集函数结果,组成返回的循环器。
此外,还可以用下面的函数:
<代码> starmap(战俘,[(1,1),(2,2),(3)])代码>
战俘将依次作用于表的每个元组。
ifilter函数与过滤()函数类似,只是返回的是一个循环器。
<代码> ifilter(λx: x比;5(2、3、5、6、7)代码>
将λ函数依次作用于每个元素,如果函数返回真,则收集原来的元素:6、7 .
此外,
<代码> ifilterfalse(λx: x比;5(2、3、5、6、7])代码>
与上面类似,但收集返回错误的元素:2,3,5 .
<代码> takewhile(λx: x & lt;5(1、3、6、7、1])代码>
当函数返回真实时,收集元素到循环器。一旦函数返回假,则停止:1,3 .
dropwhile(λx: x & lt;5 (1、3、6、7、1])
当函数返回假时,跳过元素,一旦函数返回真,则开始收集剩下的所有元素到循环器:6、7日1 .
<强>组合工具强>
我们可以通过组合原有循环器,来获得新的循环器。
<强>循环器和笛卡尔乘积强>
#,连接两个循环器成为一个。1,,2,,3,,4,5,7 链([1,2,3],,(4日,5日,7]), #,多个循环器集合的笛卡尔积,相当于嵌套循环只, 产品(& # 39;abc # 39;,, [1, 2])样例如下
for m, n 拷贝产品(& # 39;abc # 39;,, [1, 2]): ,print m, n & # 39;& # 39;& # 39; a 1 a 2 b 1 b 2 c 1 c 2 & # 39;& # 39;& # 39;<>强排列与组合强>
#,从& # 39;abcd # 39;中挑选两个元素,比如ab,公元前,…,将所有结果排序,返回为新的循环器。 排列(& # 39;abc # 39;,, 2)注意,上面的组合分顺序,即ab,英航都返回。
#从& # 39;abcd # 39;中挑选两个元素,比如ab,公元前,……将所有结果排序,返回为新的循环器。
组合(& # 39;abc # 39; 2)注意,上面的组合不分顺序,即ab,英航的话,只返回一个ab。
#与上面类似,但允许两次选出的元素重复。即多了aa、bb, cc
combinations_with_replacement (& # 39; abc # 39; 2)<强> groupby() 强>
将关键函数作用于原循环器的各个元素,根据关键函数结果,将拥有相同函数结果的元素分到一个新的循环器。每个新的循环器以函数返回结果为标签。
这就好像一群人的身高作为循环器。我们可以使用这样一个关键函数:如果身高大于180年返回“高大”;如果身高底于160年返回“短”,中间的返回“中产”。最终,所有身高将分为三个循环器,即“高”,“短”,“中产”。
出现如何在Python中使用itertools