避免无意中删除基于列表理解的快速排序中的重复项?

Avoid unintentionally removing duplicates in list comprehension-based quicksort?

我是 Python 的新手,了解到它还实现了列表理解,例如 Haskell,我对此有一些经验。我试图编写一个 Haskell 风格的 quicksort 函数。 它确实对给定的列表进行了排序,但也删除了任何重复的元素;显然,这不是排序功能中通常需要的功能。为什么会发生这种情况,我该如何解决? (Python 3.6)

def quicksort(unsorted):
    """Sorts a list least to greatest numerically using quicksort
    """
    if not unsorted:
        return []
    else:
        pivot, *rest = unsorted
        lower_sorted = quicksort([a for a in rest if a < pivot])
        upper_sorted = quicksort([a for a in rest if a > pivot])
        return lower_sorted + [pivot] + upper_sorted

其中一个条件(if a < lower_pivotif a > upper_pivot)必须包含相等性测试。