Python合集之Python列表(五)

    在上一节的合集中,我们了解了Python 列表中元素的统计及计算的相关知识,本节我们将进一步了解一下Python列表中元素的排序的相关知识。

在实际开发中,经常需要对列表进行排序。Python中提供了两种常用的对列表进行排序的方法:使用列表对象的sort()方法,使用内置的sorted()函数。

1.使用列表对象的sort()方法

列表对象提供了sort()防范用于对原列表中的元素进行排序。排序后原列表中的元素顺序发生改变,列表对象的sort()方法的语法格式如下:

listname.sort(key=none,reverse=false)
参数说明:
listname:表示要进行排序的列表
key:表示指定从每一个元素中提取一个用于比较的键(例如:设置 key=str.lower 表示在排序时不区分字母大小写)
reverse:可选参数,如果将其值设置为true,则表示降序排列,如果为false,则表示升序排列,默认为升序排列。

例如:定义一个保存10名学生语文成绩的列表,使用sort()方法对其进行排序。代码如下:

grade=[98,99,97,100,100,96,94,89,95,100]
print("原列表:",grade)
grade.sort()  #进行升序排列
print("升序:",grade)
grade.sort(reverse=true)  #进行降序排列
print("降序:",grade)

使用sort()方法进行数值列表的排序比较简单,但是使用sort()方法对字符串列表进行排序时,采用的规则是先对大写字母进行排序,然后在对小写字母进行排序。如果想要对字符串进行排序(不区分大小写字母),需要指定其key参数。

例如:定义一个保存英文字符串的列表,然后使用sort()方法对其进行升序排列,可以使用下面的代码:

char=["cat","Tom","Angela","pet"]
char.sort()  #默认区分大小写字母排序
print("区分大小写字母",char)
char.sort(key=str.lower)  #不区分大小写字母排序
print("不区分大小写字母",char)

注:采用sort()方法对列表进行排序时,对中文的支持不好,排序的结果与我们常用的音序排序法或者笔画排序法不一致,如果需要实现对中文内容的列表排序,还需要重新编写相应的方法进行处理,不能直接使用sort()方法。

2.使用内置的sorted()函数实现

在Python中,提供了sorted()函数,用于对列表进行排序,使用该函数进行排序后,原列表的元素顺序不变。sorted()函数的语法格式如下:

sorted(iterable,key=none,reverse=false)
参数说明:
iterable:表示要进行排序的列表名称
key:表示指定从每个元素中提取一个用于比较的键(例如:设置 key=str.lower 表示在排序时不区分大小写)
reverse:可选参数,如果将其指定为true 则表示为降序排列,如果为false 则表示升序排序。

例如:定义一个保存10名学生语文成绩的列表,然后使用sorted()函数对其进行排序,代码如下:

grade=[98,99,100,100,96,94,89,95,100]
grade_as=sorted(grade) #进行升序排列
print("升序",grade_as)
grade_des=sorted(grade,reverse=true) #进行降序排列
print("降序",grade_des)
print("原序列",grade)

注:列表对象的sort()方法和内置的sorted()函数的作用基本相同,不同点在于使用sort()方法会改变原列表的元素顺序,而使用sorted()函数时,会建立原列表的副本,该副本为排序后的列表。

花絮:

本期的Python 列表元素的排序就分享到这里,下期我们将继续分享Python中列表的推导式的相关知识,感兴趣的朋友可以关注我。

同时也可以关注下我的个人 微信订阅号,园子里面的文章也会第一时间在订阅号里面进行推送跟更新。

原文地址:https://www.cnblogs.com/a-mumu/p/14233021.html