Python 列表 reverse()函数使用详解

本文详细介绍了Python的reverse()函数和reversed()方法,强调了它们在反转列表时的不同,以及如何使用切片实现反转。reverse()会直接修改原始列表,而不返回新对象,而reversed()返回一个反向迭代器,不改变原列表。此外,还探讨了其他类型如字符串、元组和字典的反转方法。
摘要由CSDN通过智能技术生成

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:小白零基础《Python入门到精通》

reverse() 可以「反转」列表中的函数

语法

list.reverse()

返回值

  • None ,没有返回值,会修改列表,反转元素顺序。

实例:反转列表中的元素顺序

list1 = [1, 2, 3]
list1.reverse()
print(list1)

输出:

[3, 2, 1]

1、reverse()会修改原始副本

reverse() 设计的目的就是反转原始列表并返回None。

这样设计的好处就是,不需要创建新的列表,从而减少「资源」的使用。

我们接收 reverse() 的返回值,打印一下,发现是个None。

list1 = [1, 2, 3]
list2 = list1.reverse()
print(list2)

输出:

None

我们再看一下反转前、后的内存地址

list1 = [1, 2, 3]
print('反转前:', id(list1))
list1.reverse()
print('反转前:', id(list1))

输出:

反转前: 2127562869952
反转前: 2127562869952

可以发现,内存地址没有变,但内容不一样了,这意味着反转前的数据「消失」了,这一点在使用时需要注意。

2、reverse()和reversed()的区别?

reversed() 也能反转列表,同时「不修改」原始列表。

list1 = [1, 2, 3]
list2 = list(reversed(list1))
print(list1)
print(list2)

输出:

[1, 2, 3]
[3, 2, 1]

reversed() 返回的是下面这种「反向迭代器」,需要转成list才能正常使用。

list1 = [1, 2, 3]
list2 = reversed(list1)
print(list2)

输出:

<list_reverseiterator object at 0x000002414D7CA880>

3、其他类型

字符串、元组、字典等类型不能使用 reverse() 函数,否则会报错 AttributeError: ‘str’ object has no attribute ‘reverse’。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

当然,这些类型可以使用 reversed() 反转,配合列表推导式:

str1 = 'abc'
print([x for x in reversed(str1)])

tuple1 = (1, 2, 3)
print(tuple(reversed(tuple1)))

dict1 = {'key1': 1, 'key2': 2}
print([x for x in reversed(dict1)])

输出:

['c', 'b', 'a']
(3, 2, 1)
['key2', 'key1']

需要注意的是,列表、元组 reversed() 反转后,可以转换成对应的类型;
但字符串反转后,转换类型无效;而元组反转后,转换类型会报错:

str1 = 'abc'
print(str(reversed(str1)))

dict1 = {'key1': 1, 'key2': 2}
print(dict(reversed(dict1)))

输出:
在这里插入图片描述


4、使用切片实现反转元素

通过「切片」的方式,反转列表中的元素,格式 [start:end:step],这种方式同样不会改变原列表。

list1 = [1, 3, 2, 5]
print(list1[::-1])
print(list1)

输出:

[5, 2, 3, 1]
[1, 3, 2, 5]

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

士别三日wyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值