Python列表reverse()函数使用方法详解
作者:士别三日wyx
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]
到此这篇关于Python列表reverse()函数使用方法详解的文章就介绍到这了,更多相关Python列表reverse()函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!