《 Python List 列表全实例详解系列(九)》

__列表反转(6种方法)

   本章目录:

十一、列表反转的6种方法

(11.1)、通过列表的切片操作实现列表反转

(11.2)、使用列表对象的reverse()方法实现列表反转

(11.3)、使用内置reversed()函数实现列表反转

(11.4)、使用列表推导式实现列表反转

(11.5)、使用sort() 实现列表反转

(11.6)、使用sorted()实现列表反转


 十一、列表反转的6种方法

  在应用中,我们经常会遇到需要将列表元素进行逆序排列,也就是所有的元素位置反转的情况。

  列表反转之后原来的值没有改变。这里的反转,不是在“原地”把原来的值倒过来,而是新生成了一个值,生成的值跟原来的值相比,是倒过来了。

(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= []
mlist.reverse()
print(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', '逆境清醒']

列表反转后(迭代对象): <list_reverseiterator object at 0x00BDF710>

列表反转后转换成列表: ['逆境清醒', 'Adversity Awake', 8, 6, 4, 2, 0]

代  码

print(list(reversed("abcd")))

运行结果

['d', 'c', 'b', 'a']

代  码

mlist= []
mlist2= list(reversed(mlist))
print(mlist2)
print()

运行结果

[]

(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 列表全实例详解系列(十四)》__列表练习实例

    推荐阅读:

29

svg实例详解系列
28

查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决

27

原创唯美浪漫情人节表白专辑,(复制就可用)(html5,css3,svg)更好的向你所喜欢的人表达内心的感受。

26

2023年春节祝福第二弹——送你一只守护兔,让它温暖每一个你【html5 css3】画会动的小兔子
25

2023春节祝福系列第一弹(放飞祈福孔明灯,祝福大家身体健康)(附完整源代码及资源免费下载)
24

HTML+CSS+svg绘制精美彩色闪灯圣诞树,HTML+CSS+Js实时新年时间倒数倒计时(附源代码)

23

​草莓熊python绘图(春节版,圣诞倒数雪花版)附源代码

22

【程序人生】卡塔尔世界杯元素python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)

21

​​

python爱心源代码集锦
20

​​

巴斯光年python turtle绘图__附源代码
19

​​​

Three.js实例详解___旋转的精灵女孩(附完整代码和资源)
18

​​​​

​草莓熊python turtle绘图(玫瑰花版)附源代码

17

​​​​

立体多层玫瑰绘图源码__玫瑰花python 绘图源码集锦

16

​​​​

皮卡丘python turtle海龟绘图(电力球版)附源代码

15

​​​​

【CSDN云IDE】个人使用体验和建议(含超详细操作教程)(python、webGL方向)

14

​​​​

草莓熊python turtle绘图(风车版)附源代码

13

​​​​

用代码过中秋,python海龟月饼你要不要尝一口?

12

​​​​

《 Python List 列表全实例详解系列》__系列总目录

11

​​​​

用代码写出浪漫__合集(python、matplotlib、Matlab、java绘制爱心、玫瑰花、前端特效玫瑰、爱心)

10

​​​​

Python函数方法实例详解全集(更新中...)

9

​​​​

matplotlib 自带绘图样式效果展示速查(28种,全)

8

​​​​

手机屏幕坏了____怎么把里面的资料导出(18种方法)

7

​​​​

2023年2月多家权威机构____编程语言排行榜__薪酬状况

6

​​​​

Python中Print()函数的用法___实例详解(全,例多)

5

​​​​

色彩颜色对照表(300种颜色)(16进制、RGB、CMYK、HSV、中英文名)

4

​​​​

Node.js (v19.1.0npm 8.19.3) vue.js安装配置教程(超详细)

3

​​​​

Tomcat 启动闪退问题解决集(八大类详细)

2

​​​​

Tomcat端口配置(详细)

1

​​​​

Tomcat11、tomcat10 安装配置(Windows环境)(详细图文)

《 Python List 列表全实例详解系列(九)》__列表反转(6种方法)相关推荐

  1. 《 Python List列表全实例详解系列(二)》__创建列表(5种方式)

    < Python List列表全实例详解系列(二)> __创建列表(5种方式) 上一篇:< Python List 列表全实例详解系列(一)>__系列总目录.列表概念 本章目录 ...

  2. 《 Python List列表全实例详解系列(五)》——修改元素(修改单个、修改一组)

    < Python List列表全实例详解系列(五)> --修改元素(修改单个.修改一组) 接上一篇:<  Python List列表全实例详解系列(四)>__列表删除元素(4种 ...

  3. 《 Python List列表全实例详解系列(三)》——列表添加元素(4种方法)

    < Python List列表全实例详解系列(三)> --列表添加元素(4种方法) 接上一篇:< Python List 列表全实例详解(二)>__访问列表元素(索引和切片)列 ...

  4. 《 Python List列表全实例详解系列(四)》__列表删除元素(4种方法)删除重复元素(去重)(8种方法)

    <  Python List列表全实例详解系列(四)> __列表删除元素(4种方法)删除重复元素(去重)(8种方法) 我的技术成长&学习资料整理分享之路 我遇到问题查找资料时,经常 ...

  5. 《 Python List 列表全实例详解系列(八)》__随机列表元素

    < Python List 列表全实例详解系列(八)> __随机列表元素 本章目录: 十.随机列表元素 方法1:random.shuffle 方法2:random.sample 十.随机列 ...

  6. SVG实例详解系列(一)(svg概述、位图和矢量图区别(图解)、SVG应用实例)

    SVG实例详解系列(一) (svg概述.位图和矢量图区别(图解).SVG应用实例) 目录 一.什么是SVG? (1).位图和矢量图概念(图解) (2).SVG的小例子 (a)笑脸符 (b).小鸟 (c ...

  7. 用python绘制漂亮的图形-用python绘制图形的实例详解

    1.环境系统:windows10 python版本:python3.6.1 使用的库:matplotlib,numpy 2.numpy库产生随机数几种方法import numpy as npnumpy ...

  8. Java并发编程最佳实例详解系列

    Java并发编程最佳实例详解系列: Java并发编程(一)线程定义.状态和属性 Java并发编程(一)线程定义.状态和属性 线程是指程序在执行过程中,能够执行程序代码的一个执行单元.在java语言中, ...

  9. python画直方图成绩分析-python plotly绘制直方图实例详解

    计算数值出现的次数 import cufflinks as cf cf.go_offline() import numpy as np import pandas as pd set_slippage ...

最新文章

  1. Explore Optimization
  2. Linux的crontab任务调度
  3. TCP的粘包和拆包及Netty中的解决方案
  4. SD卡格式化怎么恢复?只需要五个步骤
  5. 数据库本地的sa有个叉号_搞定sql数据库出错,做自己的大神!
  6. ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试ces测试数据测试
  7. leetcode —— 面试题32 - III. 从上到下打印二叉树 III
  8. Linux下修改TomcatJVM内存大小
  9. linux之tar使用技巧
  10. 功能测试用例设计方法,一文带你了解用例设计,再也不担心用例了
  11. SpringMVC工作原理与工作流程
  12. 解决谷歌自带翻译不出现问题
  13. linux 实现离线迅雷,Linux 下使用 wget/aria2 进行离线迅雷批量下载
  14. 银行 结算 清分清算 对账
  15. pda通用扫描app_智能仓储盘点——PDA扫码盘点APP真正实现“轻松盘点”!
  16. 用Python进行数据分析之金融和经济数据应用
  17. python--敲击木鱼积累功德小项目(更新版(2))
  18. C++ 模板问题(一) -- 如何识别模板类型
  19. ABAC权限控制学习
  20. 数据结构之中缀表达式转为后缀

热门文章

  1. pyqt5 随笔:对蒙版遮罩mask,setmask的理解
  2. 富文本框回显乱码问题解决
  3. 自制有声书阅读器:用PaddleSpeech打开读书新方式
  4. 使用Python+OpenCV实现神经网络预处理人脸图像的快速指南
  5. PADS LogicPADS Layout软件常用的快捷键
  6. 速度不够,管道来凑——Redis管道技术
  7. 准备去「技术出海峰会」看看
  8. 2022-3-3 Leetcode 309.最 佳买卖股票时机含冷冻期
  9. 免费压缩GIF制作工具【ezgif】——非常适合大家压缩动图,斗图,制作微信表情包,写文章,写段子等专用
  10. 牛人们的面试心得与总结