Python-生成器表达式与列表理解

什么时候应该使用生成器表达式,什么时候应该在Python中使用列表推导?

# Generator expression

(x*2 for x in range(256))

# List comprehension

[x*2 for x in range(256)]

回答:

John的答案很好(当你要迭代多次时,列表理解会更好)。但是,还应注意,如果要使用任何列表方法,都应使用列表。例如,以下代码将不起作用:

def gen():

return (something for something in get_some_stuff())

print gen()[:2] # generators don't support indexing or slicing

print [5,6] + gen() # generators can't be added to lists

基本上,如果你要做的只是迭代一次,则使用生成器表达式。如果你要存储和使用生成的结果,那么列表理解可能会更好。

由于性能是选择彼此的最常见原因,所以我的建议是不要担心它,而只选择其中一个即可。如果你发现程序运行速度太慢,则只有这样,你才应该回去担心调整代码。

以上是 Python-生成器表达式与列表理解 的全部内容, 来源链接: utcz.com/qa/398079.html

回到顶部