Python 比较不同数据类型的排序

Python Compare sorting for different data types

Python。我试图找到任何用于对不同数据类型进行排序的信息。例如:'what type of data will be sorted faster: list or dictionary?' 或 'what type of data will be sorted faster: list, dictionary, tuple or set?' 为什么? 也许这是错误的问题? 我想知道在哪里可以阅读我的问题。 我尝试 google 但什么也没得到。

我正在寻找理论资料

是的,这个问题我自己也问过。然后我决定计算程序的执行时间。您来计算执行时间并找到自己最好的!!!

import time
start_time = time.time()
main()
print("--- %s seconds ---" % (time.time() - start_time))

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

一些数据是可变的。表示可以修改,比如lists.

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、here is how to do it.