def numbers(mi, ma):
return [n for n in range(mi, ma + 1)]
def gen(xs):
return (x for x in xs)
example = gen(numbers(10, 20))
在此示例中,gen
可以提高numbers
的迭代性能吗?为什么(不是)?
def numbersGen(mi, ma):
return gen([n for n in range(mi, ma + 1)]) # Generator from list comprehension?
Python可以像Haskell一样懒惰吗?
答案 0 :(得分:0)
在这种特殊情况下,range
已经像您希望的那样懒惰。没有理由进一步将其输出包装在间接层中。当然,Python生成器与Haskell懒惰的常见警告适用;也就是说,迭代多次,或者从特定点继续多次,在Python中是痛苦的,但结果通常更容易预测内存使用情况。