草庐IT

itertools库

全部标签

python - itertools 或手写生成器 - 哪个更好?

我有许多Python生成器,我想将它们组合成一个新的生成器。我可以通过使用一堆yield语句的手写生成器轻松地做到这一点。另一方面,itertools模块就是为这样的事情而制作的,对我来说,创建我需要的生成器的pythonic方法似乎是将的各种迭代器连接在一起>itertools模块。然而,在手头的问题中,它很快就会变得相当复杂(生成器需要保持某种状态---例如是否正在处理第一个或后面的项目---,第i个输出进一步取决于在第i个输入项和各种输入列表的条件下,在将它们连接到生成的列表之前必须进行不同的处理。因为可以解决我的问题的标准迭代器的组合是---由于写下源代码的一维性质---几乎不

python - 使用 itertools 创建选项矩阵

我正在尝试生成一个由True和False值组成的矩阵,它显示给定数量的选择的所有排列。因此,对于5个选择,您将得到以下输出。FFFFFTFFFFTTFFFTTTFF...FTFFF...我一直在考虑使用itertool的排列和组合,但这些排列和组合会影响位置而不是值,这会导致重复。我确信这个问题有一个标准算法,但我正在努力寻找它的名字。 最佳答案 使用itertools.product:itertools.product([False,True],repeat=5)itertools.product([False,True],rep

python - Itertools 乘积不重复

fromitertoolsimportproductteams=['india','australia','newzealand']word_and=['and']tmp='%s%s%s'items=[teams,word_and,teams]print(list(tmp%aforainlist(product(*items))))打印:['indiaandindia','indiaandaustralia','indiaandnewzealand','australiaandindia','australiaandaustralia','australiaandnewzealand'

具有可变数量参数的 Python itertools.product

我正在尝试使用itertools.product编写一个模块来组合可变数量的列表。我能得到的最接近的是:importitertoolslists=[["item1","item2"],["A","b","C"],["etc..."]]searchterms=list(itertools.product(lists))printsearchterms这行不通,因为lists是单个列表,所以它只返回原始序列。但是我不知道如何将列表变量的每个元素传递给itertools。感谢您的任何建议。 最佳答案 您需要使用*将单个列表分成其组成列表:

python - 当键值在iterable的元素中时,如何使用itertools.groupby?

为了说明,我从一个二元组列表开始:importitertoolsimportoperatorraw=[(1,"one"),(2,"two"),(1,"one"),(3,"three"),(2,"two")]forkey,grpinitertools.groupby(raw,key=lambdaitem:item[0]):printkey,list(grp).pop()[1]产量:1one2two1one3three2two试图调查原因:forkey,grpinitertools.groupby(raw,key=lambdaitem:item[0]):printkey,list(grp)

python - 相当于 itertools.product 的 Numpy

这个问题在这里已经有了答案:itertoolsproductspeedup(6个答案)关闭7年前。我知道itertools.product可以迭代多个维度的关键字列表。例如,如果我有这个:categories=[['A','B','C','D'],['E','F','G','H'],['I','J','K','L']]我在上面使用itertools.product(),我有类似的东西:>>>[xforxinitertools.product(*categories)]('A','E','I'),('A','E','J'),('A','E','K'),('A','E','L'),('A'

python - 有没有办法在 python 中使用 itertools 来清理嵌套迭代?

这个问题在这里已经有了答案:HowcanImakeafor-looppyramidmoreconciseinPython?[duplicate](4个答案)关闭6年前。假设我有以下代码:a=[1,2,3]b=[2,4,6]c=[3,5,7]foriina:forjinb:forkinc:printi*j*k有没有一种方法可以将迭代器合并到一行而不是嵌套?

Python 使用 itertools.product 创建列表?

我正在使用范围列表中的itertools创建一个列表,到目前为止我有这个:start_list=[xrange(0,201,1),xrange(0,201,2),xrange(0,201,5),xrange(0,201,10),xrange(0,201,20),xrange(0,201,50),xrange(0,201,100),xrange(0,201,200)]现在,我知道如果我尝试运行下一行,它会杀死我的python解释器:next_list=list(itertools.product(*start_list))我想知道的是,是否可以放入一个参数来检查每个元组的项目总和,并且仅

iterator - 用于容器的 Itertools

考虑以下交互式示例>>>l=imap(str,xrange(1,4))>>>list(l)['1','2','3']>>>list(l)[]有谁知道某个地方是否已经有一个带有imap版本(和其他itertools函数)的实现,这样第二次执行list(l)时你会得到与第一次相同的结果。而且我不想要常规map,因为如果您使用更大的范围,在内存中构建整个输出可能会浪费内存。我想要一些基本上可以做类似事情的东西classcmap:def__init__(self,function,*iterators):self._function=functionself._iterators=iterat

python - 我的 IDLE 无法将 itertools.izip() 识别为函数

>>>itertools.izip('ABCD','xy')Traceback(mostrecentcalllast):File"",line1,initertools.izip('ABCD','xy')AttributeError:'module'objecthasnoattribute'izip' 最佳答案 在Python3中,itertools模块中没有izip函数,因为内置的zip函数(不需要任何导入访问)现在的行为就像itertools.izip在Python2中所做的那样。因此,要使您的代码正常工作,只需使用zip而不是