Python 我可以用排序的方法对列表的一部分进行排序吗
好的,所以我正在争取一段时间来做这个节目。我的问题是,我可以使用Python 我可以用排序的方法对列表的一部分进行排序吗,python,list,tuples,Python,List,Tuples,好的,所以我正在争取一段时间来做这个节目。我的问题是,我可以使用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)]第一部分很简单,但我被卡在第二部分
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
def排序(l):
l=已排序(l,key=lambda l:l[1])#对于第一次排序
i=0
而i
我该如何实现第二部分!我是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)]
使用操作员模块中的
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)]
如果我正确理解您的逻辑,您只需使用
sorted
:
sorted(l, key=lambda x: (x[1], x[0]))
>>> [(11, 1), (7, 2), (12, 2), (14, 2), (13, 4)]
谢谢你给我们看你的作业;我相信这将很快成为ppcg。试试我很抱歉什么是ppcg。抱歉,如果我问了一些错误和愚蠢的问题@Blacksilver可能重复感谢你给我们看了你的作业;我相信这将很快成为ppcg。试试我很抱歉什么是ppcg。抱歉,如果我问了一些错误和愚蠢的问题@Blacksilver可能是非常优雅的解决方案的副本,propsVery优雅的解决方案,props