【问题标题】:Python Compare sorting for different data typesPython比较不同数据类型的排序
【发布时间】:2021-06-11 23:45:11
【问题描述】:

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

我正在寻找任何理论信息

【问题讨论】:

  • 您甚至可以对字典、元组或集合进行排序吗?据我所知,python 中的字典和集合是无序的,元组是不可变的(尽管我猜排序可能会返回一个新元组)。
  • 我们可以按键或值对字典进行排序。我们可以对元组进行排序,它们只是不可变的。对于集合:如果我们使用sort 作为集合,我们将得到排序列表/

标签: python sorting theory


【解决方案1】:

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

有些数据是可变的。表示可以修改,比如列表。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 如果没有帮助,请不要不喜欢。有什么需要请留言~~谢谢
    • 我已经考虑过测量时间,但我想阅读一些有解释的文章。 (我没有不喜欢你的帖子)
    猜你喜欢
    • 2017-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 2016-02-09
    • 1970-01-01
    • 2011-04-20
    相关资源
    最近更新 更多