jjzjj

Itertools

全部标签

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而不是

没有 root 的 Python XML 解析

我想解析一个相当大的类似xml的文件,它没有任何根元素。文件格式为:我尝试过的:尝试使用ElementTree,但返回了“无根”错误。(是否有任何其他python库可用于解析此文件?)尝试添加一个额外的标签来包装整个文件,然后使用Element-Tree对其进行解析。但是,我想使用一些更有效的方法,在这种方法中我不需要更改原始xml文件。 最佳答案 ElementTree.fromstringlist接受一个迭代器(产生字符串)。与itertools.chain一起使用:importitertoolsimportxml.etree.

python - 如何反转 itertools.chain 对象?

我的函数创建了一个生成器链:defbar(num):importitertoolssome_sequence=(x*1.5forxinrange(num))some_other_sequence=(x*2.6forxinrange(num))chained=itertools.chain(some_sequence,some_other_sequence)returnchained我的函数有时需要以相反的顺序返回chained。从概念上讲,以下是我希望能够执行的操作:ifnum不幸的是:>>>reversed(chained)TypeError:argumenttoreversed()

python - 如何在python中获取长度为n的所有组合

我想知道是否有任何方法可以从数字列表中获取长度n的所有组合。例如,如果我的列表是[1,2,3,4],我想输出(如果我选择n=3)[1,2,3][1,2,4][1,3,4][2,3,4]其他排列如[2,1,3]对我没有用。 最佳答案 itertools可以这样做:importitertoolsforcombinitertools.combinations([1,2,3,4],3):print(comb)输出:(1,2,3)(1,2,4)(1,3,4)(2,3,4) 关于python-如何在

Python itertools.combinations 的结果

我没有得到我应该从标题中的那个函数获得的结果数量,所以我希望得到你的帮助。查看文档http://docs.python.org/library/itertools.html#itertools.combinations结果的数量应该是Thenumberofitemsreturnedisn!/r!/(n-r)!when0n.它适用于那里的例子combinations('ABCD',2)-->ABACADBCBDCD因为n!/r!/(n-r)!=4!/2!/2!=6但如果我尝试combinations('ABCDEF',3)-->ABACADAEAFBCBDBEBFCDCECFDEDFEF

python - Python : like reduce but giving the list of intermediate results 中的缩减列表

您知道Python中方便的reduce函数。例如,您可以使用它来总结一个列表(假设没有内置的sum):reduce(lambdax,y:x+y,[1,2,3,4],0)返回(((0+1)+2)+3)+4=10。现在如果我想要一个中间总和的列表怎么办?在本例中,[1,3,6,10]。这是一个丑陋的解决方案。有没有更像pythonic的东西?defreducelist(f,l,x):out=[x]prev=xforiinl:prev=f(prev,i)out.append(prev)returnout 最佳答案 我最喜欢的,如果你足够新

Python itertools - 慢?

我正在尝试使用Python的itertools模块来加速三重嵌套for循环。下面的测试代码将标准的三重嵌套循环与itertools的乘积方法和输出进行了比较:嵌套循环时间=2.35023秒Itertools循环时间=2.67766秒我错过了什么吗?importnumpyimportitertoolsimporttimen=128a=numpy.arange(n**3).reshape((n,n,n))b=numpy.zeros((n,n,n))c=numpy.zeros((n,n,n))t=time.time()foriinrange(n):forjinrange(n):forkinr

python - 对不同长度的列表求和

即使两个或多个列表的长度不同,求和的最佳方法是什么?例如我有:lists=[[1,2],[0,3,4],[5]]结果应该是:result=[6,5,4] 最佳答案 您可以使用itertools.izip_longest(),并使用等于0的fillvalueIn[6]:[sum(x)forxinitertools.izip_longest(*lists,fillvalue=0)]Out[6]:[6,5,4]对于PythonIn[27]:ml=max(map(len,lists))In[28]:ml#lengthofthelongest

python - 结合 itertools 和多处理?

我有一个256x256x256Numpy数组,其中每个元素都是一个矩阵。我需要对这些矩阵中的每一个进行一些计算,并且我想使用multiprocessing模块来加快速度。这些计算的结果必须像原来的那样存储在256x256x256数组中,这样元素[i,j,k]处的矩阵结果必须将原始数组中的元素放入新数组的[i,j,k]元素中。为了做到这一点,我想制作一个列表,它可以用伪方式编写为[array[i,j,k],(i,j,k)]和将其传递给要“多处理”的函数。假设matrices是从原始数组中提取的所有矩阵的列表,myfunc是执行计算的函数,代码看起来有点像这样:importmultipro

python - 有内置的 filter() 吗?

Python中有没有函数做与filter相反的事情?IE。将项目保留在回调返回False的可迭代对象中?找不到任何东西。 最佳答案 不,filter()没有内置的反函数,因为您可以简单地反转测试。只需添加not:positive=filter(lambdav:some_test(v),values)negative=filter(lambdav:notsome_test(v),values)itertools模块确实有itertools.ifilterfalse(),这是相当多余的,因为反转bool测试非常简单。itertools版