ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-11-06 17:03:09  阅读:178  来源: 互联网

标签:index target Python 茴香豆 list 列表 source 逆序


用 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/

标签:index,target,Python,茴香豆,list,列表,source,逆序
来源: https://blog.csdn.net/mouse2018/article/details/121181563

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有