如何在 def Python 处从循环 generation/function python 获取 return 值?

How to return value from python from looped generation/function at def Python?

我的代码示例。

from itertools import *
from collections import Counter
def combinations():
    for i in combinations_with_replacement(['a','b','c'], 3):
    #for i in permutations(['0','1','2'], 3):
        return (''.join(i))
def combinations2():
    for i in combinations_with_replacement(['1','2','3'], 3):
    #for i in permutations(['0','1','2'], 3):
        return (''.join(i))

print (combinations() + combinations2())

但它 return 只有一次,例如 - aaa111 并停止。

我尝试使用 yield ,但它给我错误

TypeError: unsupported operand type(s) for +: 'generator' and 'generator'

您收到错误的原因是 yield 没有进行计算。相反,它为您提供了一个生成器对象,该对象可以在不存储它们的情况下动态生成值。因此,您将不得不遍历生成器对象以获取值并添加它们。这是 tutorial

from itertools import *
from collections import Counter
def combinations():
    for i in combinations_with_replacement(['a','b','c'], 3):
    #for i in permutations(['0','1','2'], 3):
        yield (''.join(i))
def combinations2():
    for i in combinations_with_replacement(['1','2','3'], 3):
    #for i in permutations(['0','1','2'], 3):
        yield (''.join(i))

for c in combinations():
    for c1 in combinations2():
        print(c+c1)

与 return 一起工作也很有效,如果这样做的话

from itertools import *
from collections import Counter
def combinations():
    return (''.join(i) for i in combinations_with_replacement(['a','b','c'], 3))

def combinations2():
    return (''.join(i) for i in combinations_with_replacement(['1','2','3'], 3))


for c in combinations():
    for c1 in combinations2():
        print(c+c1)