在Python中,列表支持 O(1) 的索引访问,因此预先分配列表并使用索引访问它可能是个好主意,而不是分配一个空列表并使用 append() 方法。 这是因为我们避免了如果空间不足而扩展整个列表的负担。
如果我正在使用Python,则性能在任何情况下都可能不那么重要,但是预先分配列表的更好方法是什么?
我知道这些可能成为备选项:
- [None] * n → 分配两个列表 - [None for x in range(n)] 或者使用 Python2 中的 xrange → 构建另一个对象
其中一个比另一个显着更好吗?
如果我们处于 n=len(input) 的情况怎么办?由于 input 已经存在,是否 [None for x in input] 相对于 [None] * len(input) 有更好的性能?