我有这个功能g()
我的目标是产生类似于product()
的结果,但每组字符的外观数量有限。因此,在下面的代码中,而不是product(a, repeat=3)
g()
应该产生所有组合,其中来自a
的字符出现2次,b
中的字符出现1次。这就是我所拥有的:
from itertools import permutations, product
a='ABC'
b=['*', '%3A']
l=[a]*2+[b]
def g(list):
for p in permutations(list):
yield product(*p)
result=g(l)
所以我遇到的问题是,当我yield
结果时,我得到了一个使用起来很痛苦的嵌套迭代器,当我使用return时,它只返回对应于第一个循环转向的生成器就像我做的那样:g()
仅由def g(): return product(*next(permutations(list)))
组成。
答案 0 :(得分:3)
如果你是python 3.3或更高版本,你可以使用PEP 380: Syntax for Delegating to a Subgenerator ...只做equals()
yield from