本章目录:
十一、列表反转的6种方法
(11.1)、通过列表的切片操作实现列表反转
(11.2)、使用列表对象的reverse()方法实现列表反转
(11.3)、使用内置reversed()函数实现列表反转
(11.4)、使用列表推导式实现列表反转
(11.5)、使用sort() 实现列表反转
(11.6)、使用sorted()实现列表反转
在应用中,我们经常会遇到需要将列表元素进行逆序排列,也就是所有的元素位置反转的情况。
列表反转之后原来的值没有改变。这里的反转,不是在“原地”把原来的值倒过来,而是新生成了一个值,生成的值跟原来的值相比,是倒过来了。
(11.1)、通过列表的切片操作实现列表反转 |
|
语 法 |
listname [::-1] |
实 例 |
|
代 码 |
mlist = list("Adversity Awake") mlist1 = mlist[::-1] print(mlist1) print(mlist[::-1]) print(mlist) |
运行结果 |
['e', 'k', 'a', 'w', 'A', ' ', 'y', 't', 'i', 's', 'r', 'e', 'v', 'd', 'A'] ['e', 'k', 'a', 'w', 'A', ' ', 'y', 't', 'i', 's', 'r', 'e', 'v', 'd', 'A'] ['A', 'd', 'v', 'e', 'r', 's', 'i', 't', 'y', ' ', 'A', 'w', 'a', 'k', 'e'] |
代 码 |
mlist = [2,9,4,1,0] print(mlist [::-1]) |
运行结果 |
[0, 1, 4, 9, 2] |
代 码 |
mlist = [4,7,7,1,9,"Adversity Awake",'abc', 'syz'] print('列表反转结果:', mlist [::-1]) |
运行结果 |
列表反转结果: ['syz', 'abc', 'Adversity Awake', 9, 1, 7, 7, 4] |
代 码 |
mlist=[1,2,3,4,5] print(mlist[::-1]) |
运行结果 |
[5, 4, 3, 2, 1] |
(11.2)、使用列表对象的reverse()方法实现列表反转 |
|
语 法 |
列表名.reverse() |
注 意 |
1、list.reverse()将列表中的所有元素进行原地逆序 2、list.reverse()是将列表元素反过来排序,不是倒序排序(仅仅是把列表元素头尾互换反转过来而已,并没有进行倒序排序) 3、list.reverse()对列表元素修改的排序永久性的,不过可以再调用 reverse() 来恢复原来的排序 4、使用list.reverse()函数,list.reverse()只能单独一行写 错误1、mlist = list.reverse() 错误2、print(list.reverse() ) 5、不能直接赋值给其他数组,转换后才行 |
返 回 值 |
该方法没有返回值 |
知识拓展 |
|
实 例 |
|
代 码 |
mlist= [2,9,7,0,6,9,1,8] mlist.reverse() print(mlist) |
运行结果 |
[8, 1, 9, 6, 0, 7, 9, 2] |
代 码 |
mlist= [0,2,4,6,8,'Adversity Awake', '逆境清醒'] mlist.reverse() print(mlist) |
运行结果 |
['逆境清醒', 'Adversity Awake', 8, 6, 4, 2, 0] |
代 码 |
mlist= [] |
运行结果 |
[] |
(11.3)、使用内置reversed()函数实现列表反转 |
|
语 法 |
reversed(列表名) |
注 意 |
1、与reverse()方法不同,内置函数reversed()函数不对原列表做任何修改,而是返回一个逆序排列后的迭代对象。 2、reversed(列表名)返回的是迭代器,所以前面加个list转换为列表 |
返 回 值 |
逆序排列后的迭代对象 |
知识拓展 |
reversed 方法会将列表逆序的结果存储到迭代器里面,这种方式不会改变原来的列表,也不会创建原来列表的完整副本,只会多出迭代器对象所占的空间。 |
实 例 |
|
代 码 |
#reversed(mlist)返回的是迭代器,所以加个list转换为列表 mlist= [2,9,7,0,6,9,1,8] mlist2= list(reversed(mlist)) print(mlist) print(mlist2) |
运行结果 |
[2, 9, 7, 0, 6, 9, 1, 8] [8, 1, 9, 6, 0, 7, 9, 2] |
代 码 |
mlist= [0,2,4,6,8,'Adversity Awake', '逆境清醒'] mlist2= list(reversed(mlist)) print('原列表:', mlist) print('列表反转后(迭代对象):',reversed(mlist)) print('列表反转后转换成列表:', list(mlist2)) |
运行结果 |
原列表: [0, 2, 4, 6, 8, 'Adversity Awake', '逆境清醒'] 列表反转后(迭代对象): 列表反转后转换成列表: ['逆境清醒', 'Adversity Awake', 8, 6, 4, 2, 0] |
代 码 |
print(list(reversed("abcd"))) |
运行结果 |
['d', 'c', 'b', 'a'] |
代 码 |
mlist= [] |
运行结果 |
[] |
(11.4)、使用列表推导式实现列表反转 |
|
实 例 |
|
代 码 |
mlist= [0,2,4,6,8,'Adversity Awake', '逆境清醒'] mlistB= [mlist[len(mlist)-i-1] for i in range(len(mlist))] print(mlistB) |
运行结果 |
['逆境清醒', 'Adversity Awake', 8, 6, 4, 2, 0] |
代 码 |
def myreverselist(somelist: list) -> list: mdict = dict(zip([i for i in range(len(somelist))], somelist)) return [mdict[j] for j in sorted(mdict, reverse=True)] mlist= [0,2,4,6,8,'Adversity Awake', '逆境清醒'] print(mlist) print(myreverselist(mlist)) |
运行结果 |
[0, 2, 4, 6, 8, 'Adversity Awake', '逆境清醒'] ['逆境清醒', 'Adversity Awake', 8, 6, 4, 2, 0] |
代 码 |
def myreverselist(somelist: list) -> list: templist = [] while len(somelist) > 0: templist.append(somelist[-1]) somelist = somelist[:-1] return templist mlist= [0,2,4,6,8,'Adversity Awake', '逆境清醒'] print(mlist) print(myreverselist(mlist)) |
运行结果 |
[0, 2, 4, 6, 8, 'Adversity Awake', '逆境清醒'] ['逆境清醒', 'Adversity Awake', 8, 6, 4, 2, 0] |
代 码 |
|
运行结果 |
|
(11.5)、使用sort() 实现列表反转 |
|
Python 列表 List sort ()函数: sort() 函数用于对原列表进行排序,如果指定参数,则使用指定的比较函数。 使用 sort() 方法进行正序排序,永久性排序,排序后不可恢复原来的排序。 倒序排序,在 sort() 方法括号内传入参数 reverse=True 达到倒序排序效果。 永久性,排序后不再保持原来排序方式的 |
|
语 法 |
list.sort(key=None, reverse=False) |
参 数 |
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。 reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。 |
注 意 |
1、使用sort()方法对list排序会修改list本身,不会返回新list, 2、如果你不需要保留原来的list,可使用sort()。 3、sort()方法不能对字典dict进行排序。 4、sort()方法不能直接将 int 和 str 类型的比较排序。 5、sort()方法不能直接将 tuple 和 str 类型的比较。 6、sort()方法不能直接将 list 和 str 类型的比较。 7、sort()方法默认升序排序。 |
返 回 值 |
该方法不返回任何值,但是会对列表的对象进行排序。 |
知识拓展 |
sorted ()函数:函数对所有可迭代的对象进行排序操作。 sort 与 sorted 区别: 1、sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 2、list 的 sort()方法无返回值,sorted()函数会返回一个重新排序的列表。 3、list.sort()会修改原序列,sorted()函数不改变原有序列 |
实 例 |
|
代 码 |
#sort()排序reverse参数接受的是一个bool类型的值 (Ture or False),排序规则:reverse = True 降序, reverse = False 升序(默认)。 (Ture or False)第一个字母必须是大写的。 mlist= [4,7,7,1,9,5,2,6] mlist.sort(reverse=True) print(mlist) |
运行结果 |
[9, 7, 7, 6, 5, 4, 2, 1] |
代 码 |
#sort()排序key参数接受的是一个只有一个形参的函数,sort()将按照权值大小进行排序 mlist= [4,7,7,1,9,5,2,6] mlist.sort() print(mlist) def size(a): mlist=10-int(a) return mlist mlist.sort(key=size) print(mlist) |
运行结果 |
[1, 2, 4, 5, 6, 7, 7, 9] [9, 7, 7, 6, 5, 4, 2, 1] |
代 码 |
#降序输出列表 mlist= ['0','8','2','6','4','逆境清醒','Adversity Awake'] mlist.sort(reverse=True) print(mlist) |
运行结果 |
['逆境清醒', 'Adversity Awake', '8', '6', '4', '2', '0'] |
代 码 |
#降序输出列表 mlist= [2,9,7,0,6,9,1,8] mlist.sort(reverse=True) print(mlist) |
运行结果 |
[9, 9, 8, 7, 6, 2, 1, 0] |
代 码 |
#降序输出列表 mlist=[(2,9),(7,0),(6,9),(1,8)] mlist.sort(reverse=True) print(mlist) |
运行结果 |
[(7, 0), (6, 9), (2, 9), (1, 8)] |
代 码 |
#通过指定列表中的元素排序来输出列表 #指定列表中的第二个元素排序来输出列表 #降序输出列表 mlist=[(2,9),(7,0),(6,9),(1,8)] print(mlist) def choosesort(mkey): return mkey[1] mlist.sort(key=choosesort,reverse=True) print(mlist) |
运行结果 |
[(2, 9), (7, 0), (6, 9), (1, 8)] [(2, 9), (6, 9), (1, 8), (7, 0)] |
代 码 |
#先按第二个元素升序排序,第二个元素相同按第一个元素降序排序 mlist=[[2,9],[7,0],[6,9],[1,8],[3,4],[1,6]] print(mlist) mlist.sort(key=lambda x:(x[1],-x[0])) print(mlist) |
运行结果 |
[2, 9], [7, 0], [6, 9], [1, 8], [3, 4], [1, 6]] [7, 0], [3, 4], [1, 6], [1, 8], [6, 9], [2, 9]] |
代 码 |
#先按字符串长度升序排序,长度相同按字典序降序排序 mlist= ['0','8','2','6','4','逆境清醒','Adversity Awake'] print(mlist) mlist.sort(key=lambda x:(len(x),list(map(lambda c:-ord(c),x)))) print(mlist) |
运行结果 |
['0', '8', '2', '6', '4', '逆境清醒', 'Adversity Awake'] ['8', '6', '4', '2', '0', '逆境清醒', 'Adversity Awake'] |
代 码 |
|
运行结果 |
|
更多实例请查看:《sort()函数实例详解》 |
(11.6)、使用sorted()实现列表反转 |
|
sorted ()函数:函数对所有可迭代的对象进行排序操作。即对序列(列表、元组、字典、集合、还包括字符串)进行排序。 |
|
语 法 |
sorted(iterable, key=None, reverse=False) |
参 数 |
iterable -- 可迭代对象。 key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。 reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。 |
注 意 |
1、sorted()函数默认升序排序 2、python2中有cmp参数,但是在python3中这一参数被取消了 |
返 回 值 |
返回重新排序的列表。 |
知识拓展 |
List sort ()函数: sort() 函数用于对原列表进行排序,如果指定参数,则使用指定的比较函数 sort 与 sorted 区别: 1、sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。 2、list 的 sort()方法无返回值,sorted()函数会返回一个重新排序的列表。 3、list.sort()会修改原序列,sorted()函数不改变原有序列 |
实 例 |
|
代 码 |
#sorted()函数会返回一个排序列表,不改变原有序列 mlist= [4,7,7,1,9,5,2,6] sorted(mlist) print(mlist) print(sorted(mlist)) |
运行结果 |
[4, 7, 7, 1, 9, 5, 2, 6] [1, 2, 4, 5, 6, 7, 7, 9] |
代 码 |
mlist= [4,7,7,1,9,5,2,6] print(sorted(mlist)) mlist2=sorted(mlist) print(mlist2) |
运行结果 |
[1, 2, 4, 5, 6, 7, 7, 9] [1, 2, 4, 5, 6, 7, 7, 9] |
代 码 |
# sorted() 函数默认对序列中元素进行升序排序,通过手动将其 reverse 参数值改为 True,可实现降序排序。 mlist = [3,1,4,9,3] print(mlist) print(sorted(mlist)) print(sorted(mlist, reverse=True)) |
运行结果 |
[3, 1, 4, 9, 3] [1, 3, 3, 4, 9] [9, 4, 3, 3, 1] |
代 码 |
# 对元组进行排序 mlist = (4, 7, 7, 1, 9, 5, 2, 6) print(mlist) print(sorted(mlist)) |
运行结果 |
(4, 7, 7, 1, 9, 5, 2, 6) [1, 2, 4, 5, 6, 7, 7, 9] |
代 码 |
# 字典默认按照key进行排序 mlist = {3:4,1: 5,4:3,6:2,5:8} print(mlist) print(sorted(mlist.items())) |
运行结果 |
{1: 5, 3: 4, 4: 3, 5: 8, 6: 2} [(1, 5), (3, 4), (4, 3), (5, 8), (6, 2)] |
代 码 |
mlist = {"苹果":2,"芒果": 5,"火龙果":3,"草莓":2,"菠萝":8} print(mlist) print(sorted(mlist.items())) |
运行结果 |
{'火龙果': 3, '草莓': 2, '菠萝': 8, '苹果': 2, '芒果': 5} [('火龙果', 3), ('芒果', 5), ('苹果', 2), ('草莓', 2), ('菠萝', 8)] |
代 码 |
# 对集合进行排序 mlist = {4, 7, 7, 1, 9, 5, 2, 6} print(mlist) print(sorted(mlist)) |
运行结果 |
{1, 2, 4, 5, 6, 7, 9} [1, 2, 4, 5, 6, 7, 9] |
代 码 |
# 对字符串进行排序 mlist = "47719526" print(mlist) print(sorted(mlist)) |
运行结果 |
47719526 ['1', '2', '4', '5', '6', '7', '7', '9'] |
代 码 |
#在调用 sorted() 函数时,还可传入一个 key 参数,它可以接受一个函数,该函数的功能是指定 sorted() 函数按照什么标准进行排序。 mlist =["Adversity Awake","逆境清醒","走寻半生仍笑叹","得失看平淡"] print(mlist) print(sorted(mlist)) print(sorted(mlist,key=lambda mlist:len(mlist))) |
运行结果 |
['Adversity Awake', '逆境清醒', '走寻半生仍笑叹', '得失看平淡'] ['Adversity Awake', '得失看平淡', '走寻半生仍笑叹', '逆境清醒'] ['逆境清醒', '得失看平淡', '走寻半生仍笑叹', 'Adversity Awake'] |
代 码 |
mlist = [('苹果','红',8),('苹果','青',9),('芒果','黄',2), ('桃子','红',1),('菠萝','黄',6)] print(mlist) print(sorted(mlist)) print(sorted(mlist, key=lambda s: s[0])) print(sorted(mlist, key=lambda s: s[1])) print(sorted(mlist, key=lambda s: s[2])) # 按数量排序 print(sorted(mlist, key=lambda s: s[2], reverse=True)) # 按降序 |
运行结果 |
[('苹果', '红', 8), ('苹果', '青', 9), ('芒果', '黄', 2), ('桃子', '红', 1), ('菠萝', '黄', 6)] [('桃子', '红', 1), ('芒果', '黄', 2), ('苹果', '红', 8), ('苹果', '青', 9), ('菠萝', '黄', 6)] [('桃子', '红', 1), ('芒果', '黄', 2), ('苹果', '红', 8), ('苹果', '青', 9), ('菠萝', '黄', 6)] [('苹果', '红', 8), ('桃子', '红', 1), ('苹果', '青', 9), ('芒果', '黄', 2), ('菠萝', '黄', 6)] [('桃子', '红', 1), ('芒果', '黄', 2), ('菠萝', '黄', 6), ('苹果', '红', 8), ('苹果', '青', 9)] [('苹果', '青', 9), ('苹果', '红', 8), ('菠萝', '黄', 6), ('芒果', '黄', 2), ('桃子', '红', 1)] |
代 码 |
|
运行结果 |
|
请点击下一章查看后续实例详解 ------》
逆境清醒 Python List列表——全实例详解系列 | ||
1 | 《 Python List 列表全实例详解系列(一)》__系列总目录、列表概念 | |
2 | 《 Python List 列表全实例详解系列(二)》__创建列表(5种方法) | |
3 | 《 Python List 列表全实例详解系列(三)》__列表添加元素(4种方法) | |
4 | 《 Python List列表全实例详解系列(四)》__列表删除元素(4种方法)删除重复元素方法 | |
5 | 《 Python List 列表全实例详解系列(五)》__修改元素(修改单个、修改一组) | |
6 | 《 Python List 列表全实例详解系列(六)》__查找元素 | |
7 | 《 Python List 列表全实例详解系列(七)》__索引和切片 | |
8 | 《 Python List 列表全实例详解系列(八)》__随机列表元素 | |
9 | 《 Python List 列表全实例详解系列(九)》__列表反转(6种方法) | |
10 | 《 Python List 列表全实例详解系列(十)》__清空列表 | |
11 | 《 Python List 列表全实例详解系列(十一)》__列表运算符 | |
12 | 《 Python List 列表全实例详解系列(十二)》__列表内置及常用函数 | |
13 | 《 Python List 列表全实例详解系列(十三)》__相关技巧 | |
14 | 《 Python List 列表全实例详解系列(十四)》__列表练习实例 | |
推荐阅读:
14 | |
13 | 用代码过中秋,python海龟月饼你要不要尝一口? |
12 | Python List 列表(创建、索引和切片、列表反转、添加删除修改查找元素)__实例详解(全) |
11 | 用代码写出浪漫合集(python 绘制爱心、玫瑰花,字符画爱心、前端特效玫瑰、爱心) |
10 | Python函数方法实例详解全集(更新中...) |
9 | matplotlib 自带绘图样式效果展示速查(全) |
8 | 手机屏幕坏了____怎么把里面的资料导出(18种方法) |
7 | 2022年9月多家权威机构____编程语言排行榜__薪酬状况 |
6 | Python中Print()函数的用法___详解(全,例多) |
5 | 色彩颜色对照表系列(1~5)(16进制、RGB、CMYK、HSV、中英文名) |
4 | Tomcat端口配置(详细) |
3 | Tomcat 启动闪退问题解决集(八大类详细) |
2 | Apache Tomcat 各版本发行时间( v10.1.0-M17~v3.0) |
1 | Tomcat10安装(Windows环境)(详细) |