Python数据结构开销/性能

Python数据结构开销/性能,python,optimization,Python,Optimization,在Python中使用列表而不是字典而不是元组有什么性能优势吗 如果我在优化速度,有什么理由选择一个而不是另一个吗?对于少量元素,元组的构造速度会稍微快一些。虽然实际上大部分的增益将在内存使用中而不是CPU周期中,因为元组比列表需要更少的空间 话虽如此,性能差异应该可以忽略不计,一般来说,在分析代码并确定瓶颈代码部分之前,不必担心这些微优化。最大的区别在于元组是不可变的,而列表和字典是可变的数据结构。这意味着元组的速度也更快,因此如果您有一个不变的项集合,您应该更喜欢它们而不是列表。Rich 列表

在Python中使用列表而不是字典而不是元组有什么性能优势吗


如果我在优化速度,有什么理由选择一个而不是另一个吗?

对于少量元素,元组的构造速度会稍微快一些。虽然实际上大部分的增益将在内存使用中而不是CPU周期中,因为元组比列表需要更少的空间


话虽如此,性能差异应该可以忽略不计,一般来说,在分析代码并确定瓶颈代码部分之前,不必担心这些微优化。

最大的区别在于元组是不可变的,而列表和字典是可变的数据结构。这意味着元组的速度也更快,因此如果您有一个不变的项集合,您应该更喜欢它们而不是列表。

Rich

列表和目录适合不同的需要。确保不要在dicts散列非常完美的线性搜索中使用列表,因为它的速度要慢得多。另外,如果您只需要遍历元素列表,不要使用dicts,因为它将比列表占用更多的空间

这听起来可能很明显,但从算法上选择正确的数据结构比微优化有更高的性能收益,因为编译代码布局更高效。如果您在O(n)中搜索列表,而不是在O(1)中搜索dict,微优化将不会节省您的时间。

请参见以下内容


+1比较DICT和列表之间的差异。请注意,PHP程序员天生就没有这种区别。