生成列表可以提高Python性能吗?

时间:2016-09-28 01:58:59

标签: python performance python-3.x generator

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一样懒惰吗?

1 个答案:

答案 0 :(得分:0)

在这种特殊情况下,range已经像您希望的那样懒惰。没有理由进一步将其输出包装在间接层中。当然,Python生成器与Haskell懒惰的常见警告适用;也就是说,迭代多次,或者从特定点继续多次,在Python中是痛苦的,但结果通常更容易预测内存使用情况。