python - 生成器表达式和。列表推导

标签 python list-comprehension generator-expression

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

# Generator expression
(x*2 for x in range(256))

# List comprehension
[x*2 for x in range(256)]

最佳答案

John's answer很好(当您想多次迭代某些内容时,列表理解会更好)。但是,还值得注意的是,如果您想使用任何列表方法,则应该使用列表。例如,以下代码将不起作用:

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 - 生成器表达式和。列表推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47789/

相关文章:

python - 列表理解无用变量

python - 我可以使用生成器表达式来打印字典列表的键、值对吗?

python - 使用多个(相似的)生成器表达式

python - 为什么这一行在 python 中不打印 123...n ?

python - 一个喜剧般简单的 python 程序上的 IRC 连接错误

python - 如何清除多个断言语句之间捕获的 stdout/stderr

python - 如何从 Excel 中访问值,其中第一列是标题

python - 凯拉斯。值错误 : I/O operation on closed file

python - python 列表理解中缺失值的干净解决方案

python - 为什么这个列表理解比等效的生成器表达式更快?