Python中的列表理解会以内存有效的方式减少吗?
题
我是Python的初学者,这是我的第一篇文章,所以不要太苛刻:)。我最近一直在玩Python,想知道是否类似 通用标签
将导致Python首先创建所有元素的列表,然后查找最大值,从而导致O(2n)时间,否则它将在迭代Θ(n)时跟踪最大值。另外,由于Python3中的range不同(是可迭代的),这会使其不同于Python2吗?
解决方案
您的示例将导致Python首先构建整个列表。如果要避免这种情况,可以改用生成器表达式: 通用标签
或简单地: 通用标签
当然(在Python 2中),range
本身会构建一个完整的列表,因此在这种情况下,您真正想要的是:
通用标签
但是,就所花费的时间而言,所有这些表达式都具有相同的复杂性。重要的区别在于,最后一个需要O(1)空间,而其他一个则需要O(n)空间。
其他提示
列表理解总是生成一个列表(除非某些东西引发异常)。在大多数情况下,建议使用Genex。 通用标签
不隶属于 StackOverflow