2024-04-24 16:55:06 发布
网友
这里的关键字是“stable sorting algorithm”。考虑两个稳定的排序函数:
为了得到所需的订单,你会把它们按什么顺序组合起来?
正如其他人提到的,第一个排序函数可以这样调用:
list.sort(key=len, reverse=True)
第二个排序函数可以这样调用:
list.sort()
这应该足以写出一个完整的解决方案。
如果以正确的方式组合函数,则应得到以下结果:
>>> l = ['aaa', 'fff', 'bbb', 'ddd', 'e', 'cccc'] # ... sorting functions combined in the right way ... >>> l ['cccc', 'aaa', 'bbb', 'ddd', 'fff', 'e']
在Python中,list的sort方法有一个键,可以用来指定排序的条件。 对于您描述的问题,我将使用密钥,并按如下所示进行正常排序。
>>> l = ['aa','aaa','aaaa','b','bb','z','ccc'] >>> l.sort(key=len,reverse=True) >>> l ['aaaa', 'ccc', 'aaa', 'bb', 'aa', 'z', 'b'] >>> l.sort() >>> l ['aa', 'aaa', 'aaaa', 'b', 'bb', 'ccc', 'z'] >>>
您只需要调用一次sort,因为Python会自动按字典顺序对元组进行排序。也就是说,如果让Python比较两个元组,它将按它们的第一个元素排序,除非那些比较相等,在这种情况下,它将按它们的第二个元素排序,除非那些比较相等,在这种情况下。。。
sort
您希望通过减去元素的长度然后按字母顺序对元素列表进行排序,因此您希望字符串s的键是元组(-len(s), s)。因此:
s
(-len(s), s)
>>> l = ['aa','aaa','aaaa','b','bb','z','ccc'] >>> sort_key = lambda s: (-len(s), s) >>> l.sort(key=sort_key) >>> l ['aaaa', 'aaa', 'ccc', 'aa', 'bb', 'b', 'z']
设计
这里的关键字是“stable sorting algorithm”。考虑两个稳定的排序函数:
为了得到所需的订单,你会把它们按什么顺序组合起来?
实施
正如其他人提到的,第一个排序函数可以这样调用:
第二个排序函数可以这样调用:
这应该足以写出一个完整的解决方案。
结果
如果以正确的方式组合函数,则应得到以下结果:
在Python中,list的sort方法有一个键,可以用来指定排序的条件。 对于您描述的问题,我将使用密钥,并按如下所示进行正常排序。
您只需要调用一次
sort
,因为Python会自动按字典顺序对元组进行排序。也就是说,如果让Python比较两个元组,它将按它们的第一个元素排序,除非那些比较相等,在这种情况下,它将按它们的第二个元素排序,除非那些比较相等,在这种情况下。。。您希望通过减去元素的长度然后按字母顺序对元素列表进行排序,因此您希望字符串
s
的键是元组(-len(s), s)
。因此:相关问题 更多 >
编程相关推荐