前言
我们常需要对列表、元组中的元素进行排序,例如按照字母表排列学生的名称。这里就需要用到列表的sort()
方法,以及sorted()
函数。
实践
我们先来构建一个包含5个学生名字的列表:
names = ["Jon", "Bob", "Avil", "Tom", "Justin"]
然后我们对其中的学生名字按照字母表的顺序进行排列:
names.sort(reverse=False)
print(names)
>>> ['Avil', 'Bob', 'Jon', 'Justin', 'Tom']
这里的reverse=False
为升序排列,若为reverse=True
就是降序排列。
如果names不为列表,我们就不能用sort
方法进行排序,而需要用sorted
函数:
names = ("Jon", "Bob", "Avil", "Tom", "Justin")
sorted_names = sorted(names, reverse=True)
print(sorted_names)
>>> ['Tom', 'Justin', 'Jon', 'Bob', 'Avil']
可见,此时的names为元组,我们用sorted
函数对其排序并指明排序方式。
如果我们的数据包含多列呢,此时还可以通过key
参数指定按照哪一列排列:
details = [
("Jon", "A", 89),
("Bob", "B", 12),
("Avil", "A", 25),
("Tom", "F", 58),
("Justin", "B", 12),
]
index = lambda x: x[0]
details.sort(key=index, reverse=False)
print(details)
>>> [('Avil', 'A', 25), ('Bob', 'B', 12), ('Jon', 'A', 89), ('Justin', 'B', 12), ('Tom', 'F', 58)]
我们通过匿名函数指定按照第一列进行排列。如果原始数据不为列表,就需要用下述操作:
details = (
("Jon", "A", 89),
("Bob", "B", 12),
("Avil", "A", 25),
("Tom", "F", 58),
("Justin", "B", 12),
)
index = lambda x: x[2]
sorted_details = sorted(details, key=index, reverse=False)
print(sorted_details)
>>> [('Bob', 'B', 12), ('Justin', 'B', 12), ('Avil', 'A', 25), ('Tom', 'F', 58), ('Jon', 'A', 89)]
可见我们按照最后一列升序排列。
以上便是排序的全部内容,感谢大家的收藏、点赞、评论。我们下一节将介绍map函数(Map),敬请期待~