['2', '8', '2', '3', '6', '4', '1', '1', '10', '6', '3', '3', '6', '1', '3', '8', '4', '6', '1', '10', '8', '4', '10', '4', '1', '3', '2', '3', '2', '6', '1', '5', '2', '9', '8', '5', '10', '8', '7', '9', '6', '4', '2', '6', '3', '8', '8', '9', '8', '2', '9', '10', '3', '10', '7', '5', '7', '1', '7', '5', '1', '4', '7', '6', '1', '10', '5', '4', '8', '4', '2', '7', '8', '1', '1', '7', '4', '1', '1', '9', '8', '6', '5', '9', '9', '3', '7', '6', '3', '10', '8', '10', '7', '2', '5', '1', '1', '9', '9', '5']
使用lambda函数后,按如下方式:
a.sort(key=lambda a: int(a.split()[0]))
a = a[::-1]
我得到了
['10', '10', '10', '10', '10', '10', '10', '10', '10', '9', '9', '9', '9', '9', '9', '9', '9', '9', '8', '8', '8', '8', '8', '8', '8', '8', '8', '8', '8', '8', '7', '7', '7', '7', '7', '7', '7', '7', '7', '6', '6', '6', '6', '6', '6', '6', '6', '6', '6', '5', '5', '5', '5', '5', '5', '5', '5', '4', '4', '4', '4', '4', '4', '4', '4', '4', '3', '3', '3', '3', '3', '3', '3', '3', '3', '3', '2', '2', '2', '2', '2', '2', '2', '2', '2', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1']
但我想 10在1之后结束,同样地,如果把20和2放在列表中,那么2应该在20之前,20在10之前,以此类推
操作:
在没有其他选项的情况下,将
a
设置为:您需要一个有序的字符串列表。那些字符串是数字的表示。现在需要分组排序。首先是从
'9'
开始的,然后是'8'
,最后是'1'
。在这些组中,每个值都应按数字顺序排序。你知道吗示例列表:
现在让我们用
a.sort(key=lambda v: v[0])
进行分组排序:我们看到,值现在被分组了,但是我们希望值首先以
'9'
开始。我们将通过用a.sort(key=lambda v: v[0], reversed=True)
反转结果来解决这个问题分组是正确的,现在我们必须对分组中的值进行排序。因此,在根据第一个字符排序之后,我们必须按数字对值进行排序。这很简单,我们只需要为键创建一个
tuple
:a.sort(key=lambda v: (v[0], int(v)), reverse=True)
好的,值现在已经排序了,但是我们必须在组中反转它们。最简单的方法是取负数:
a.sort(key=lambda v: (v[0], -int(v)), reverse=True)
。你知道吗您可以使用
key=str
使用以下示例相关问题 更多 >
编程相关推荐