草庐IT

more-itertools

全部标签

python - 将 itertools.permutations 的输出从元组列表转换为字符串列表

使用itertools排列函数后列表出现一些问题。fromitertoolsimportpermutationsdeflongestWord(letters):combinations=list(permutations(letters))forsincombinations:''.join(s)print(combinations)longestWord("aah")输出看起来像这样:[('a','a','h'),('a','h','a'),('a','a','h'),('a','h','a'),('h','a','a'),('h','a','a')]我希望这是一个简单的列表,但它似

python - itertools.groupby 的意外行为

这是观察到的行为:In[4]:x=itertools.groupby(range(10),lambdax:True)In[5]:y=next(x)In[6]:next(x)---------------------------------------------------------------------------StopIterationTraceback(mostrecentcalllast)in()---->1next(x)StopIteration:In[7]:yOut[7]:(True,)In[8]:list(y[1])Out[8]:[9]list(y[1])的预期输出

python - 在 python 3 中使用 itertools.product 和列表

我正在尝试创建一个给定蛋白质序列的可能密码子列表。基本上,我尝试创建的脚本将处理给定的字符串输入并输出该输入代表的另一组字符串的可能组合。例如,字符“F”代表“UUU”或“UUC”;字符“I”代表“AUU”、“AUC”或“AUA”。给定输入“FI”,我尝试创建的脚本应该输出:'UUUAUU'、'UUUAUC'、'UUUAUA'、'UUCAUU'、'UUCAUC'和'UUCAUA'。我目前被这段代码困住了:importitertoolsF=['UUU','UUC']I=['AUU','AUC','AUA']seq,pool='FI',[]foriinseq:pool.append(eva

python - itertools.tee 是如何工作的,可以复制 'itertools.tee' 以保存它的 "status"吗?

下面是一些关于itertools.tee的测试:li=[xforxinrange(10)]ite=iter(li)==================================================it=itertools.tee(ite,5)>>>type(ite)>>>type(it)>>>type(it[0])>>>>>>list(ite)[0,1,2,3,4,5,6,7,8,9]>>>list(it[0])#hereIgotnothingafter'list(ite)',why?[]>>>list(it[1])[]====================play

python - 日期范围 : is there a more pythonic way? 中的所有星期二和星期三

我想找到2015-11-02和2015-12-14之间的所有星期二和星期三(作为datetime对象)。这有效:fromdatetimeimportdatetime,timedeltal=[]foriinrange(100):d=datetime(2015,11,2)+timedelta(days=i)ifd>datetime(2015,12,14):breakifd.weekday()==1ord.weekday()==2:#tuesdayorwednesdayl.append(d)printl[datetime.datetime(2015,11,3,0,0),datetime.da

python - 防止 itertools.permutation 中的内存错误

首先我想提一下我有一个3GB的内存。我正在研究一种算法,该算法在节点上的时间呈指数级,因此我在代码中有它perm=list(itertools.permutations(list(graph.Nodes)))#graph.Nodesisatupleof1,2,...nintegers它生成列表中的所有顶点组合,然后我可以处理其中一个排列。但是,当我为40个顶点运行程序时,会出现内存错误。有没有更简单的实现方式,通过它我可以生成顶点的所有组合并且没有这个错误。 最佳答案 尝试使用由排列生成的迭代器而不是用它重新创建一个列表:perm_

python - 如何在 python 2.5 中编写类似于 itertools.product 的函数

我有一个元组列表,例如:A=[(1,2,3),(3,5,7,9),(7)]并希望用每个元组中的一项生成所有排列。1,3,71,5,71,7,7...3,9,7我可以有任意数量的元组,一个元组可以有任意数量的元素。而且我不能使用itertools.product()因为python2.5。 最佳答案 itertools.product的文档有一个如何在py2.5中实现它的例子:defproduct(*args,**kwds):#product('ABCD','xy')-->AxAyBxByCxCyDxDy#product(range(

python - 在 `itertools` Python 模块返回的组合中查找给定组合(自然数)的索引

给定前n个自然数的k组合,出于某种原因,我需要在itertools返回的那些组合中找到这种组合的位置。combination(range(1,n),k)(原因是这样我可以使用list而不是dict来访问关联的值每个组合,知道组合)。因为itertools以规则的模式产生它的组合,所以可以这样做(而且我还发现了一个简洁的算法),但我正在寻找一种更快/更自然的方式,我可能忽略。顺便说一句,这是我的解决方案:deffind_idx(comb,n):k=len(comb)idx=0last_c=0forcincomb:#idx+=sum(nck(n-2-x,k-1)forxinrange(c-

python - 获取python的itertools循环当前元素

我知道您可以使用c=cycle(['a','b','c'])通过c.next()在元素之间循环>,但是有办法获取迭代器的当前元素吗?例如,如果c.next()返回了'c',则意味着迭代器之前位于'b'。有没有一种方法可以在不使用next()的情况下获取'b'? 最佳答案 迭代器/生成器无法获取当前值。您应该保留对它的引用或创建一些包装器来保存它。 关于python-获取python的itertools循环当前元素,我们在StackOverflow上找到一个类似的问题:

python - 2^n 具有高级过滤功能的 Itertools 组合

我知道我可以使用itertools抽出组合,并定义组合组的大小,如下所示:importitertoolsprintlist(itertools.combinations(['V','M','T','O','Q','K','D','R'],4))它的输出就像一个元组列表,在这种情况下每个长度为4。从这里开始,我想做的是强制执行2个参数-1)排除包含某些对的任何组合/元组-例如V和M,或者Q和K。2)强制每个元组仅包含1个字母实例。我相信itertools已经在做#2。应该保留的只是那些不包含任何这些预先确定的“假”对的元组组。因此,如果我排除包含V和M的组,则组('V','M','Q',