【发布时间】:2008-11-21 14:22:56
【问题描述】:
在 Python 中使用列表而不是字典而不是元组有什么性能优势吗?
如果我正在优化速度,是否有任何理由偏爱一个而不是另一个?
【问题讨论】:
标签: python optimization
在 Python 中使用列表而不是字典而不是元组有什么性能优势吗?
如果我正在优化速度,是否有任何理由偏爱一个而不是另一个?
【问题讨论】:
标签: python optimization
丰富,
列表和字典是适合不同需求的野兽。确保不要将列表用于 dicts 散列完美的线性搜索,因为它的速度较慢。此外,如果您只需要遍历元素列表,请不要使用字典,因为它会比列表占用更多空间。
这听起来很明显,但是由于更有效的编译代码布局等,从算法上选择正确的数据结构比微优化具有更高的性能增益。如果您在 O(n) 中而不是在 dict 中搜索列表在 O(1) 中,微优化不会拯救你。
【讨论】:
为少量元素构建元组会稍微快一些。虽然实际上大部分收益将在内存使用而不是 CPU 周期上,因为元组比列表需要更少的空间。
话虽如此,性能差异应该可以忽略不计,一般来说,在您分析代码并确定有瓶颈的代码部分之前,您不必担心这些类型的微优化。
【讨论】:
最大的区别在于元组是不可变的,而列表和字典是可变的数据结构。这意味着元组也更快,因此如果您有一组不变的项目,您应该更喜欢它们而不是列表。
【讨论】: