我可以使用已排序的列表切片

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我可以使用已排序的列表切片相关的知识,希望对你有一定的参考价值。

好的,所以我很长时间都在尝试这个程序。我的问题是我可以使用sorted命令对列表的一部分/切片进行排序。好的更多上下文我的程序的目的是输入一个任意排列的元组列表,然后由第二个元素然后由第一个元素排序。比如说。列表[(12, 2), (13, 4), (11, 1), (14, 2), (7, 2)]通过;该函数应首先将其排序为[(11, 1), (12, 2), (14, 2), (7, 2), (13, 4)],然后将[(11, 1), (7, 2), (12, 2), (14, 2), (13, 4)]排序为第一部分,但我陷入了第二部分。这是我试过的:

def Sort(l):
    l = sorted(l, key=lambda l: l[1]) #for the first sort
    i = 0
    while i < len(l)-1:
        if l[i][1] == l[i+1][1]:
            z=i
            y = i +1
            print(z,i)
            while l[z][1] == l[z+1][1] and z < len(l)-1 and y<len(l) -1 :
                print(z)
                if l[z][0] > l[y][0]:
                    (l[z],l[z+1]) = (l[z+1],l[z])
                    print('if',l)
                y = y+1
                i= i+1
        i = i+1
    print(l)
    return l  

我如何实现第二部分!我是python的新手!

答案

使用运算符模块中的itemgetter

from operator import itemgetter
keyfunc = itemgetter(1, 0) # sort by index 1, then index 0
sorted(l, key=keyfunc)
# [(11, 1), (7, 2), (12, 2), (14, 2), (13, 4)]
另一答案

如果我理解你的逻辑,你可以一次性使用sorted

sorted(l, key=lambda x: (x[1], x[0]))

>>> [(11, 1), (7, 2), (12, 2), (14, 2), (13, 4)]

以上是关于我可以使用已排序的列表切片的主要内容,如果未能解决你的问题,请参考以下文章

都有哪些数据类型能转换成列表,以及列表的:索引取值,切片,统计元素个数,增删改查,插入元素,扩展,删除,排序

如何从片段内的列表视图打开链接网址?

你知道的Go切片扩容机制可能是错的

乐哥学AI_Python:Numpy索引,切片,常用函数

在 Python 中使用变量对列表进行切片

片段中的 notifyDataSetChanged() 不刷新列表视图