可能重复:
sorted() 使用生成器表达式而不是列表
我们都知道使用生成器而不是一直实例化列表可以节省时间和内存,尤其是在我们大量使用推导式的情况下。
这是一个问题,请考虑以下代码:
output = SomeExpensiveCallEgDatabase()
results = [result[0] for result in output]
return sorted(results)
对 sorted 的调用将返回结果的排序列表。如下声明结果然后调用排序是更好还是更糟?
results = (result[0] for result in output)
我的猜测是对 sorted() 的调用将遍历生成器并实例化一个列表本身,以便对其运行快速排序或合并排序。所以在这里使用生成器没有任何优势。这个假设正确吗?