gpt4 book ai didi

python - 为什么 DSU decorate-sort-undecorate 比提供比较函数更快?

转载 作者:行者123 更新时间:2023-11-28 20:20:10 26 4
gpt4 key购买 nike

Python 爱好者喜欢谈论一种称为 DSU 的技术:

假设我想按第三个字段的 int 值对列表进行排序:

# Decorate
decorated = [(int(item[2]), item) for item in items]
# Sort
decorated.sort()
# Undecorate
items = [item[1] for item in decorated]

据推测,这种方法比:

def compare(item1, item2):
return cmp(int(item1[2]), int(item2[2]))
items.sort(compare)

为什么 DSU 更快?是什么让没有比较器的 sort() 变得特别?

最佳答案

这取决于从项目到排序依据的值的转换成本。在这种情况下,转换是取第三项的int

使用比较方法,每个项目会发生多次转换。使用 decorate/sort/undecorate 方法,每个项目只发生一次转换。如果键函数开销很大,那么每个项目只调用一次应该更有效。

请注意,您可以使用内置函数执行装饰/排序/取消装饰方法:

items.sort(key=lambda item: int(item[2]))

关于python - 为什么 DSU decorate-sort-undecorate 比提供比较函数更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32186877/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com