【发布时间】:2012-08-01 10:09:11
【问题描述】:
我们都知道一直使用生成器而不是实例化列表可以节省时间和内存,尤其是在我们大量使用推导式的情况下。
这里有一个问题,请考虑以下代码:
output = SomeExpensiveCallEgDatabase()
results = [result[0] for result in output]
return sorted(results)
对 sorted 的调用将返回结果的排序列表。如下声明结果然后调用 sorted 是更好还是更糟?
results = (result[0] for result in output)
我的猜测是对 sorted() 的调用将遍历生成器并实例化一个列表本身,以便对其运行快速排序或合并排序。所以在这里使用生成器没有任何优势。这个假设正确吗?
【问题讨论】:
-
我认为没有区别。
标签: python optimization generator list-comprehension sorted