用 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/ 查看更多内容。

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

  1. Python:如何仅用递归函数和栈操作逆序一个栈

    如何仅用递归函数和栈操作逆序一个栈 题目: 一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1. 将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序, ...

  2. 【Python茴香豆系列】之 字典合并

    [Python茴香豆系列]之 字典合并 用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情.这让我想起鲁迅笔下的孔乙己.孔乙己对于茴香豆的茴字的四种写法颇有研究.我不敢 ...

  3. 【Python茴香豆系列】之 拍扁列表

    [Python茴香豆系列]之 拍扁列表 用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情.这让我想起鲁迅笔下的孔乙己.孔乙己对于茴香豆的茴字的四种写法颇有研究.我不敢 ...

  4. 【Python茴香豆系列】之 PANDAS 修改 DataFrame 列名

    [Python茴香豆系列]之 PANDAS 修改 DataFrame 列名 用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情.这让我想起鲁迅笔下的孔乙己.孔乙己对于茴 ...

  5. 【Python茴香豆系列】之 PANDAS 获取 DataFrame 的行数

    [Python茴香豆系列]之 PANDAS 获取 DataFrame 的行数 用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情.这让我想起鲁迅笔下的孔乙己.孔乙己对于 ...

  6. 【Python茴香豆系列】之 PANDAS 如何遍历 DataFrame 的所有行

    [Python茴香豆系列]之 PANDAS 如何遍历 DataFrame 的所有行 用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情.这让我想起鲁迅笔下的孔乙己.孔乙 ...

  7. 如何仅用递归函数和栈操作逆序一个栈——你要先用stack实现,再去改成递归——需要对递归理解很深刻才能写出来...

    /**  * 如何仅用递归函数和栈操作逆序一个栈  * 题目:  * 一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1.  * 将这个栈转置后,从栈顶到栈底为1,2,3,4, ...

  8. 如何仅用递归函数和栈操作逆序一个栈

    [题目]​ 一个栈依次压入1.2.3.4.5,那么从栈顶到栈底分别为5.4.3.2.1.将这个栈转置后,从栈顶到栈底为1.2.3.4.5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他 ...

  9. 编程3:仅用递归函数和栈操作逆序一个栈

    <?php header("content-type:text/html;charset=utf-8"); /** 仅用递归函数和栈操作逆序一个栈 P8*/function ...

最新文章

  1. oracle 远程exp导出,EXP远程导出完整Oracle数据库
  2. 关于C++模版的连接错误问题
  3. hibernate总结-N+1问题
  4. 一 流程控制之if判断
  5. MTD和 uboot中的bootargs 下属 mtdparts
  6. ACE(Adaptive Communication Environment)介绍
  7. Android笔记 采用httpclient提交数据到服务器demo
  8. Linux的最大文件限制数ulimit
  9. Pytorch的可视化工具tensorboardX
  10. LCIS最长公共上升子序列
  11. 系统字体服务器,把字体放到服务器
  12. overload方法重载
  13. 计算机无法访问e盘,win10系统E盘拒绝访问的详细方法
  14. u盘安装原版window10系统
  15. 007数据分析能力:业务题
  16. Flutter 插件开发:iOS篇
  17. LINUX TC介绍
  18. 英国G5、亚洲top1…未明学员斩获15枚世界top100学校offer!
  19. DSShop单店铺商城B2C功能列表清单
  20. java中di,初识Spring的DI及其基本用法

热门文章

  1. C语言——小鱼“比可爱”比赛
  2. 阿里云-邮件推送 java 代码 ,测试邮件推送服务,阿里云邮件推送,java
  3. python中坐标系的方向_使用python计算径向角度,顺时针/逆时针方向,给定像素坐标(反之亦然)...
  4. java如何获取手机号码_微信小程序+Java获取用户授权手机号码
  5. 构建vue-cli npm安装webpack报错原因 error -4075解决办法
  6. 4075 染色(并查集)
  7. 计算机二级使用多级符号对章名,计算机二级考试题目分析
  8. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第21讲:PHP运行原理及编程规范
  9. Verilog中的有限状态机
  10. 联讯机顶盒直播点播系统方案,智能机顶盒,智能电视客户端