📜  Python|列表元素的排序列表的索引

📅  最后修改于: 2022-05-13 01:54:59.486000             🧑  作者: Mango

Python|列表元素的排序列表的索引

排序是一种常见的结构,并且已经讨论了它的许多变体。但有时,我们需要对 list 的列表进行排序,而且只需要在排序之前找到元素出现的顺序。让我们找出如何在列表列表中获取排序顺序的索引。

方法 #1:使用列表理解 + enumerate() + sort()

上述 3 个功能的组合可用于执行此特定任务。在此,我们执行由元素以及行和列坐标组成的三元组的排序,并在第二步中返回它们。

# Python3 code to demonstrate
# Indices of sorted list of list elements
# using List comprehension + enumerate() + sort()
  
# initializing list
test_list = [[4, 5, 1],
             [9, 3, 2],
             [8, 6]]
  
# printing original list
print("The original list : " + str(test_list))
  
# using List comprehension + enumerate() + sort()
# Indices of sorted list of list elements
res = [(i, j) for i, x in enumerate(test_list)
                     for j, k in enumerate(x)]
  
res.sort(key = lambda ij: test_list[ij[0]][ij[1]]) 
  
# print result
print("The indices of sorted order are : " + str(res))
输出 :

方法 #2:使用sorted() + lambda

上面执行的任务可以作为 sorted函数的参数执行,而 lambda函数执行上述列表理解函数的任务。

# Python3 code to demonstrate
# Indices of sorted list of list elements
# using sorted() + lambda
  
# initializing list
test_list = [[4, 5, 1],
             [9, 3, 2],
             [8, 6]]
  
# printing original list
print("The original list : " + str(test_list))
  
# using sorted() + lambda
# Indices of sorted list of list elements
res = sorted([(i, j) for i, x in enumerate(test_list)
                            for j, k in enumerate(x)],
             key = lambda ij: test_list[ij[0]][ij[1]])
  
# print result
print("The indices of sorted order are : " + str(res))
输出 :