我有这个函数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)))
组成。你知道吗
如果您是Python3.3或更高版本,您可以使用PEP 380: Syntax for Delegating to a Subgenerator。。。只要做
yield from
相关问题 更多 >
编程相关推荐