Pythonistas喜歡談論一個叫DSU技術:爲什麼DSU裝飾排序undecorate比提供比較功能更快?
假設我要排序的第三個字段的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()沒有比較特殊?
它通常不是真的認爲DSU更快。實際上,使用關鍵功能的速度可能更快一些。一個關鍵的功能不使用'cmp'並且'cmp'已經在Python 3x中被刪除了 – dawg
是的,我看到cmp已經在PY3中被刪除了,現在我明白了原因。 – NeoWang
@dawg'key'參數本質上是DSU的內置支持。 – chepner