使用python快速排序包含列表的列表

2024-05-15 10:28:19 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有这样定义的列表:

myresults = [
    [1,"A",2],
    [2,"Z",1],
    [3,"J",0]
    ]

我需要整理一下名单。我知道我可以将sorted()函数与键函数lambda=x:x[i]一起使用,其中i是在列表中排序的位置。所以这应该是有效的:

^{pr2}$

并返回一个按子列表第二列排序的列表。在

你如何使用快速排序算法来处理多维列表?在


Tags: lambda函数算法列表定义排序整理sorted
3条回答

又快又脏的解决方案。 如果快速排序如下所示:

def qsort(lst):
    if len(lst) == 0:
        return []
    else:
        pivot = lst[0]
        lesser = qsort([x for x in lst[1:] if x < pivot])
        greater = qsort([x for x in lst[1:] if x >= pivot])
        return lesser + [pivot] + greater

您只需使用索引变量按所需维度排序:

^{pr2}$

这个实现远不是最佳的,但我想你已经知道了。在

您可以通过以下方式实现:

import operator
list.sort(key=operator.itemgetter(*args))

这也会起作用的。。在

^{pr2}$

您可以使用Python的operator模块。在

import operator
sorted(myresults, key=operator.itemgetter(0))
[[1, 'A', 2], [2, 'Z', 1], [3, 'J', 0]]
sorted(myresults, key=operator.itemgetter(1))
[[1, 'A', 2], [3, 'J', 0], [2, 'Z', 1]]

相关问题 更多 >