首页 > 解决方案 > Python比较不同数据类型的排序

问题描述

Python。我试图找到对不同数据类型进行排序的任何信息。例如:“哪种类型的数据排序更快:列表还是字典?” 或“哪种类型的数据排序更快:列表、字典、元组还是集合?” 为什么?也许这是个错误的问题?我想知道在哪里可以了解我的问题。我试图用谷歌搜索,但一无所获。

我正在寻找任何理论信息

标签: pythonsortingtheory

解决方案


数据类型不会影响排序速度,至少不会直接影响。随数据类型而“可能”改变的是访问或修改数据的时间。但即便如此,它也是有条件的,因为没有“一种最佳数据类型”。

有些数据是可变的。这意味着它可以被修改,例如列表。

my_list = [1,2,3,4]
my_list[2] = 6
# Prints: [1,2,6,4]
print(my_list)

但其他类型是不可变的,这意味着它们无法更改。元组就是这种情况。

my_tuple = (1,2,3,4)
#Throws: TypeError: 'tuple' object does not support item assignment
my_tuple[2] = 6
print(my_tuple)

因此,要修改不可变对象,您必须复制所有内容并将新数字放入内存中(注意。不可变对象在许多情况下都很棒,但那是另一天的事了)。因此,仅对排序算法使用元组可能不是一个好主意。

现在 !...

排序时真正重要的是排序算法。为了优化,排序算法可能会混合使用可变和不可变数据类型,但这不是您应该关注的。归根结底,您应该先了解排序算法的工作原理,然后再尝试优化它们。您应该学习我们在计算机科学中所说的“大 O 表示法”,它评估算法的复杂性。

因此,为了更好地使用排序算法,我建议您使用以下链接:

然后,当您了解算法的工作原理后,您可能想深入研究 Python 的核心。您可以使用timeit来评估每种数据类型的“访问时间”,并尝试在 Python 中获得更多的排序能力......但不要在 Python 中进行那种算法优化,这是一个陷阱!Python 非常适合快速开发有效的软件,但 Python 很慢。如果您想要RAW POWER,请在 C 或 C++ 中实现算法,然后将这些文件扩展到 Python,这里是如何做到的


推荐阅读