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

xujunhui / 2023-09-05 / 原文

 

reverse()函数,可以反正 列表的函数

用法

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

输出:
[3, 2, 1]

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

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

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

反转前后的内存地址:

data = [1, 2, 3]
print('反转之前的地址', id(data))
data.reverse()
print('反正之后的内存地址', id(data))

输出:

反转之前的地址 3121968088448
反正之后的内存地址 3121968088448

 

反转前后的地址没有发生改变,但是内容发生改变,意味着反转前数据”消失“,需要注意

 

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

reversed()函数,不在原始数据上进行操作,重新开辟一个空间进行操作

data = [1, 2, 3]
print('反转之前的地址', id(data))
data1 = reversed(data)
print('反正之后的内存地址', id(data1))

输出:

反转之前的地址 2626746615168
反正之后的内存地址 2627170379104

reversed()函数的返回值是 :迭代器  

data = [1, 2, 3]
data1 = reversed(data)
print(data1)

输出:
<list_reverseiterator object at 0x000001CC814EAFE0>

 

字符串、元组、字典等类型不能使用 reverse() 函数,否则报错

AttributeError: 'tuple' object has no attribute 'reverse'
# AttributeError: 'tuple'对象没有属性'reverse'

AttributeError: 'str' object has no attribute 'reverse'
AttributeError: 'dict' object has no attribute 'reverse'

字符串、元组、字典等类型可以使用reversed()函数 ,返回一个迭代器

data =(1,2,3)
data1 = reversed(data)
print(data1)

输出:
<reversed object at 0x00000294EFAEAFE0>