Python |两个列表中的完整性排序
在解决问题的过程中,我们经常会遇到许多需要对列表进行排序的问题。但是有时我们也想对另一个列表进行排序,这样的话,的元素会自动移动,并且即使在第一个列表被排序之后,也保持在与第一个列表相同的索引处。让我们讨论一下实现这一点的某些方法。
方法一:使用sorted() + zip() + itemgetter()
结合这三个功能,我们有可能完成任务。zip 函数将两个列表绑定在一起,sorted 函数对列表进行排序,itemgetter 函数用于定义我们需要第二个列表移动的指标,在本例中是第一个列表。
# Python3 code to demonstrate
# integrity sorting in two list
# using sorted() + zip() + itemgetter()
from operator import itemgetter
# initializing lists
test_list1 = [3, 4, 9, 1, 6]
test_list2 = [1, 5, 3, 6, 7]
# printing original lists
print ("The original list 1 is : " + str(test_list1))
print ("The original list 2 is : " + str(test_list2))
# using sorted() + zip() + itemgetter()
# integrity sorting in two list
res = [list(x) for x in zip(*sorted(zip(test_list1, test_list2),
key = itemgetter(0)))]
# printing result
print ("The lists after integrity sort : " + str(res))
Output:
The original list 1 is : [3, 4, 9, 1, 6]
The original list 2 is : [1, 5, 3, 6, 7]
The lists after integrity sort : [[1, 3, 4, 6, 9], [6, 1, 5, 7, 3]]
方法#2:使用sorted() + zip() + lambda function
这个方法执行相似的任务,每个函数执行相似的功能,不同的只是代替 itemgetter 函数,lambda 函数执行分配一个基来排序列表的任务,也就是这种情况下的第一个列表。
# Python3 code to demonstrate
# integrity sorting in two list
# using sorted() + zip() + lambda function
from operator import itemgetter
# initializing lists
test_list1 = [3, 4, 9, 1, 6]
test_list2 = [1, 5, 3, 6, 7]
# printing original lists
print ("The original list 1 is : " + str(test_list1))
print ("The original list 2 is : " + str(test_list2))
# using sorted() + zip() + lambda function
# integrity sorting in two list
res = [list(i) for i in zip(*sorted(zip(test_list1, test_list2),
key = lambda dual: dual[0]))]
# printing result
print ("The lists after integrity sort : " + str(res))
Output:
The original list 1 is : [3, 4, 9, 1, 6]
The original list 2 is : [1, 5, 3, 6, 7]
The lists after integrity sort : [[1, 3, 4, 6, 9], [6, 1, 5, 7, 3]]
版权属于:月萌API www.moonapi.com,转载请注明出处