如何在 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)
我的代码示例。
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)