📜  Python|查找列表中元素的相对顺序

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

Python|查找列表中元素的相对顺序

有时我们有一个未排序的列表,我们希望找到元素在排序时的实际位置,即我们希望构造一个列表,如果列表已排序,则该列表可以为每个指定的元素提供位置。这在 Web 开发和竞争性编程领域有很好的应用。让我们讨论一些可以做到这一点的方法。

方法 #1:使用sorted() + index() + 列表推导
以上所有函数可以结合起来实现这一特定任务。 sorted函数返回排序后的顺序,索引由 index函数完成。列表理解的任务是完成整个列表元素并整合这两个任务。

# Python3 code to demonstrate
# Finding relative order of elements in list
# using sorted() + index() + list comprehension
  
# initializing list
test_list = [6, 3, 1, 2, 5, 4]
  
# printing original list
print("The original list is : " + str(test_list))
  
# using sorted() + index() + list comprehension
# Finding relative order of elements in list
temp = sorted(test_list)    
res = [temp.index(i) for i in test_list]
  
# printing result
print ("The relative ordering list is : " + str(res))
输出 :
The original list is : [6, 3, 1, 2, 5, 4]
The relative ordering list is : [5, 2, 0, 1, 4, 3]

方法 #2:使用map() + enumerate() + 字典理解 + sorted()
使用字典推导代替列表推导,形成排序列表,并使用枚举遍历排序列表中的实际排序索引以获得键值对,然后通过映射获取列表中的所有索引。

# Python3 code to demonstrate
# Finding relative order of elements in list
# using map() + enumerate() + dictionary comprehension + sorted()
  
# initializing list
test_list = [6, 3, 1, 2, 5, 4]
  
# printing original list
print("The original list is : " + str(test_list))
  
# using map() + enumerate() + dictionary comprehension + sorted()
# Finding relative order of elements in list
temp = {val: key for key, val in enumerate(sorted(test_list))}
res = list(map(temp.get, test_list))
  
# printing result
print ("The relative ordering list is : " + str(res))
输出 :
The original list is : [6, 3, 1, 2, 5, 4]
The relative ordering list is : [5, 2, 0, 1, 4, 3]