【Python茴香豆系列】之 如何逆序一个列表

用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情。
这让我想起鲁迅笔下的孔乙己。孔乙己对于茴香豆的茴字的四种写法颇有研究。我不
敢自比孔乙己,这里搜集一些 Python 的茴香豆,以飨各位码农。

在 Python 编程中经常会遇到逆序列表的情况,假设有一个列表:
[1, 2, 3, 4, 5] ,我们需要得到这个列表的逆序列表,即 [5, 4, 3, 2, 1] 。
下面我们先准备源列表:

>>> source_list = [1, 2, 3, 4, 5]

茴香豆一:使用 For 循环

逆序一个列表,老老实实的方法是用一个循环,从源列表的尾部开始,按倒序依次取
一个元素添加到目标列表中,然后打印这个目标列表就可以了。

>>> target_list = list()
>>> for index in range(len(source_list)):
>>>     target_index =  - index -1
>>>     target_list.append(source_list[target_index])
>>> print(target_list)
[5, 4, 3, 2, 1]

当然,如果使用列表推导的方式,上面的内容可以写成一行代码:

>>> print([source_list[(- index -1)] for index in range(len(source_list))])
[5, 4, 3, 2, 1]

茴香豆二: 使用列表的 reverse 方法

当然,上面的方法有一点复杂,我们需要一个简洁一些的方法。根据官方文档,列表
本身带有一个 reverse 方法,其功能是把列表反序。示例如下:

>>> source_list.reverse()
>>> print(source_list)
[5, 4, 3, 2, 1]

这个方法简单实用,会背单词就可以了。不过要注意,这个方法会改变这个列表本身
的内容。如果我们不想改变其内容,需要先建立一个列表的副本。示例如下:

>>> source_list = [1, 2, 3, 4, 5]
>>> target_list = source_list[:]
>>> target_list.reverse()
>>> print(source_list)
>>> print(target_list)
[1, 2, 3, 4, 5]
[5, 4, 3, 2, 1]

茴香豆三:使用 reversed 类

建立副本有点麻烦?那么使用 reserved 类吧,该类是 Pyton 内置的,其功能返回
给定序列的逆序的迭代器。有点拗口,看示例:

>>> print(list(reversed(source_list)))
[5, 4, 3, 2, 1]

注意,因为 reversed 返回的是一个迭代器,我们这里使用了 list 类来把迭代器
转换为列表。如果你只是需要知道如何把一个列表逆序,那么知道 reverse 和
reversed 就够了。它们都是 Python 内置的,高效又便捷,用了不吃亏。

本文未完,学有余力又闲得没事干的朋友,请到我的自留地:https://dy2018.gitlab.io/ 查看更多内容。

猜你喜欢

转载自blog.csdn.net/mouse2018/article/details/121181563
今日推荐