我编写了一个函数来返回一个生成器,该生成器包含给定长度的子字符串的每个唯一组合,这些子字符串包含来自主字符串的n个以上的元素。在
举例来说:
如果我有'abcdefghi'和一个长度为2的探针,并且每个列表的阈值为4个元素,我希望得到:
['ab', 'cd', 'ef', 'gh']
['ab', 'de', 'fg', 'hi']
['bc', 'de', 'fg', 'hi']
我对这个问题的第一次尝试是返回一个列表列表。结果计算机内存溢出了。作为一个粗略的二次解决方案,我创建了一个执行类似操作的生成器。问题是我创建了一个嵌套的生成器来调用它自己。当我运行这个函数时,它似乎只是在内部for循环中循环,而实际上没有再次调用它自己。我认为生成器会在递归洞的最前面,直到到达yield语句为止。有什么线索吗?在
^{pr2}$如果把产量改为印刷,这个工作很好!我希望能得到任何帮助。我意识到这并不是这类搜索问题的最佳实现,它看起来像是从上一次get_next_probe调用中返回找到的位置列表,并过滤此列表中不与new_last重叠的元素_探针端部会更有效率。。。但这对我来说写起来容易多了。任何算法的输入仍然是值得赞赏的。在
谢谢!在
它可以很好地递归,但是要想让
yield
ed值向外传播,您需要显式地执行它—就像它是return
一样,您需要显式地return
每次递归的结果。所以,不是:你可以做一些类似的事情:
^{pr2}$或者,如果您使用的是Python 3.3或更新版本,也可以执行以下操作:
相关问题 更多 >
编程相关推荐