【问题标题】:How to return value from python from looped generation/function at def Python?如何从def Python的循环生成/函数中从python返回值?
【发布时间】:2021-01-12 11:38:08
【问题描述】:

我的代码示例。

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())

但它只返回一次,例如 - aaa111 并停止。

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

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

【问题讨论】:

    标签: python-3.x function loops return-value


    【解决方案1】:

    如果这样做的话,返回也可以在飞行中工作

    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)
    

    【讨论】:

      【解决方案2】:

      您收到错误的原因是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)
      

      【讨论】:

        猜你喜欢
        • 2011-07-05
        • 1970-01-01
        • 2018-08-20
        • 1970-01-01
        • 2020-09-03
        • 1970-01-01
        • 1970-01-01
        • 2019-07-31
        • 2015-08-08
        相关资源
        最近更新 更多