【发布时间】:2017-12-16 06:25:41
【问题描述】:
我有一个生成器函数,我想从另一个函数调用它并返回获得的生成器。我可以在这里看到两种方法 -
请注意,以下函数是用于说明目的的简单虚拟函数。请不要想出更好的方法来实现这些功能本身。
方法一def fun_a(n):
for i in range(n):
yield i+10
def fun_b(n):
if n < 0:
yield None
return
yield fun_a(n)
并将其用作list(list(fun_b(10))[0]) 以获取[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
def fun_b(n):
if n < 0:
yield None
return
for i in fun_a(n):
yield i
那么list(fun_b(10))可以给我[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]。
虽然方法 1 看起来不错,但我不想返回列表列表,因为在其他情况下我会返回列表并且我不想弄乱我的代码。方法2只是效率低下。
什么是处理这种情况的真正好方法?
【问题讨论】:
标签: python generator-expression