在 Python 中对元组进行排序
Vaibhhav Khetarpal
2023年1月30日
在 Python 中,可以使用 Tuples 将多个项目存储在一个变量中。Tuples 列表可以像整数列表一样进行排序。
本教程将讨论根据元组中的第一个、第二个或第 i 个元素对元组列表进行排序的不同方法。
在 Python 中使用 list.sort()
函数对 Tuple 列表进行排序
list.sort()
函数按升序或降序对一个列表的元素进行排序。它的 key
参数指定在排序中要使用的值。key
应是一个函数或其他可调用的函数,可以应用于每个列表元素。
以下代码根据所有元组中的第二个元素对元组进行排序。
list_students = [
("Vaibhhav", 86),
("Manav", 91),
("Rajesh", 88),
("Sam", 84),
("Richie", 89),
]
# sort by second element of tuple
list_students.sort(key=lambda x: x[1]) # index 1 means second element
print(list_students)
输出:
[('Sam',84), ('Vaibhhav',86), ('Rajesh',88), ('Richie',89), ('Manav',91)]
通过设置 sort()
方法的 reverse
参数为 True
,可以将顺序反转为降序。
下面的代码通过使用 reverse
参数将元组的列表按降序排序。
list_students = [
("Vaibhhav", 86),
("Manav", 91),
("Rajesh", 88),
("Sam", 84),
("Richie", 89),
]
# sort by second element of tuple
list_students.sort(key=lambda x: x[1], reverse=True)
print(list_students)
输出:
[('Manav',91), ('Richie',89), ('Rajesh',88), ('Vaibhhav',86), ('Sam',84)]
使用 Python 中的冒泡排序算法对 Tuple 列表进行排序
冒泡排序是一种最简单的排序算法,它的工作原理是,如果列表中相邻的元素顺序不对,就将它们交换,并重复这一步,直到列表排序完毕。
以下代码根据第二个元素对元组进行排序,并使用冒泡排序算法。
list_ = [("Vaibhhav", 86), ("Manav", 91), ("Rajesh", 88), ("Sam", 84), ("Richie", 89)]
# sort by second element of tuple
pos = 1
list_length = len(list_)
for i in range(0, list_length):
for j in range(0, list_length - i - 1):
if list_[j][pos] > list_[j + 1][pos]:
temp = list_[j]
list_[j] = list_[j + 1]
list_[j + 1] = temp
print(list_)
输出:
[('Sam',84), ('Vaibhhav',86), ('Rajesh',88), ('Richie',89), ('Manav',91)]
pos
变量指定了进行排序的位置,在本例中,就是第二个元素。
我们也可以使用第一个元素对元组列表进行排序。下面的程序实现了这一点。
list_ = [("Vaibhhav", 86), ("Manav", 91), ("Rajesh", 88), ("Sam", 84), ("Richie", 89)]
# sort by first element of tuple
pos = 0
list_length = len(list_)
for i in range(0, list_length):
for j in range(0, list_length - i - 1):
if list_[j][pos] > list_[j + 1][pos]:
temp = list_[j]
list_[j] = list_[j + 1]
list_[j + 1] = temp
print(list_)
输出:
[('Manav',91), ('Rajesh',88), ('Richie',89), ('Sam',84), ('Vaibhhav',86)]
Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.
LinkedIn