目录
在购物的时候,不知道你们有没有做过这种事,就是会进行价格比较,让价格从高到底进行排序,或者从低到高进行排序,那这种操作如果用 Python 中的列表可不可以模拟呢,今天我们就来说两个对 Python 列表进行排序的方法。
sort() 方法
sort() 方法可以对原列表中的元素进行排序,也就是说是对原列表进行直接操作,无论升序还是降序实际操作的都是原列表,比如对班级成绩进行排序
'''
语法:
listname:表示要进排序的列表
key:表示指定一个从每个列表元素中提取一个用于比较的键(例如,设置"key=str.lower"表示在排序时不区分字母大小写)
reverse:可选参数,如果将其值指定为True,则表示降序排列,如果为False,则表示升序排列,默认为升序排列
'''
listname.sort(key=None, reverse=False)
# 成绩列表
scores = [100, 80, 90, 100, 70, 60, 50, 100]
# 升序
scores.sort()
# 升序输出
print(scores)
# 降序
scores.sort(reverse=True)
# 降序输出
print(scores)
# 运行结果
[50, 60, 70, 80, 90, 100, 100, 100]
[100, 100, 100, 90, 80, 70, 60, 50]
通过代码运行结果,我们可以看到,sort() 排序后,无论是升序还是降序,都是将原列表中的元素顺序进行了改变。sort() 方法也可以对中文内容的列表进行排序,但是对中文支持不好,所以,排序的结果与我们习惯的中文排序法不一致,因此,不建议直接使用 sort() 方法,而是建议重新编写相应的方法进行处理。
sorted() 函数
很多时候,我们都是希望,能在不改变原列表的元素顺序下,来进行重新排序的,因此,我们可以用 sorted() 函数来实现。
'''
语法:
iterable:表示要进排序的列表
key:表示指定一个从每个列表元素中提取一个用于比较的键(例如,设置"key=str.lower"表示在排序时不区分字母大小写)
reverse:可选参数,如果将其值指定为True,则表示降序排列,如果为False,则表示升序排列,默认为升序排列
'''
sorted(iterable, key=None, reverse=False)
# 成绩列表
scores = [100, 80, 90, 100, 70, 60, 50, 100]
# 升序
scores_as = sorted(scores)
# 升序输出
print(scores_as)
# 降序
scores_des = sorted(scores,reverse=True)
# 降序输出
print(scores_des)
# 运行结果
[50, 60, 70, 80, 90, 100, 100, 100]
[100, 100, 100, 90, 80, 70, 60, 50]
通过代码的运行结果,我们可以发现,列表对象的sort() 方法和内置 sorted() 函数的作用基本相同,所不同的就是使用 sort() 方法时,会改变原列表的元素排列顺序,而使用 sorted() 函数时,会建立一个原列表的副本,该副本为排序后的列表。