Lambda排序:根据多个元素

问题描述 投票:-1回答:1

我要排序:元组列表需要使用数组中的多个元素进行排序。

元组的输入数组需要根据数组中的多个元素进行排序。对于某些索引,它需要以非降序排序(以0表示),而对于其他索引,它需要以非递增mder排序(以1表示)在下面的编辑器中。您需要编写lambda函数以实现相同功能。

例如,输入数组为arr = [(1,2,3),(3,2,1),(4,2,1), (6,4,3)],元素数为n=4,每个元组中的元素数为m = 3。令要对其进行排序的输入索引为indices =[(2,0), (O, 1)],长度为k = 2。这意味着我们需要基于非降序的索引2对数组进行排序,然后基于非降序的索引0对数组进行排序。第一。基于index 2以非降序排序:我们得到[(3,2,1),(4,2,1),(1,2, 3),(6,4,3)],然后,基于index 0以非降序排序我们得到[(4,2,1),[3,2,1),(6,4,3),(1,2,3)]

注意:

[您需要实现稳定的排序,即,如果在位置i,j的元素之间存在并列,使得i<=j,然后这些元素在排序数组中的位置是fi,fj,然后是fi<=fj

功能说明:

在下面的编辑器中完成功能indexSort。您只需要编写实现该功能所需的lambda函数即可。

arr[arr[0],....arr[n-1]]:元组数组索引:两个元素的数组元组

示例1:

arr=[(1,2,3),(3,2,1),(4,2,1), (6,4,3)]
indices=[(2,0), (O, 1)]
Output: [(4,2,1),[3,2,1),(6,4,3),(1,2,3)]

说明:

  • index 2降序排列:[(3,2,1),(4,2,1),(1,2,3),(6,4,3)]
  • index 0的升序排列:[(4,2,1),(3,2,1),(6,4,3),(1,2,3)]
python python-3.x sorting lambda
1个回答
0
投票

问题希望您编写一个lambda函数来生成用于对元组列表进行排序的键。根据外部函数的indicies参数,这样做并不难。如果索引中的第二个值非零,我将使用列表推导式,对索引取反值:

© www.soinside.com 2019 - 2024. All rights reserved.