【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/ 查看更多内容。
【Python茴香豆系列】之 如何逆序一个列表相关推荐
- Python:如何仅用递归函数和栈操作逆序一个栈
如何仅用递归函数和栈操作逆序一个栈 题目: 一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1. 将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序, ...
- 【Python茴香豆系列】之 字典合并
[Python茴香豆系列]之 字典合并 用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情.这让我想起鲁迅笔下的孔乙己.孔乙己对于茴香豆的茴字的四种写法颇有研究.我不敢 ...
- 【Python茴香豆系列】之 拍扁列表
[Python茴香豆系列]之 拍扁列表 用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情.这让我想起鲁迅笔下的孔乙己.孔乙己对于茴香豆的茴字的四种写法颇有研究.我不敢 ...
- 【Python茴香豆系列】之 PANDAS 修改 DataFrame 列名
[Python茴香豆系列]之 PANDAS 修改 DataFrame 列名 用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情.这让我想起鲁迅笔下的孔乙己.孔乙己对于茴 ...
- 【Python茴香豆系列】之 PANDAS 获取 DataFrame 的行数
[Python茴香豆系列]之 PANDAS 获取 DataFrame 的行数 用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情.这让我想起鲁迅笔下的孔乙己.孔乙己对于 ...
- 【Python茴香豆系列】之 PANDAS 如何遍历 DataFrame 的所有行
[Python茴香豆系列]之 PANDAS 如何遍历 DataFrame 的所有行 用 Python 编程,使用不同的方法来完成同一个目标,有时候是一件很有意思的事情.这让我想起鲁迅笔下的孔乙己.孔乙 ...
- 如何仅用递归函数和栈操作逆序一个栈——你要先用stack实现,再去改成递归——需要对递归理解很深刻才能写出来...
/** * 如何仅用递归函数和栈操作逆序一个栈 * 题目: * 一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1. * 将这个栈转置后,从栈顶到栈底为1,2,3,4, ...
- 如何仅用递归函数和栈操作逆序一个栈
[题目] 一个栈依次压入1.2.3.4.5,那么从栈顶到栈底分别为5.4.3.2.1.将这个栈转置后,从栈顶到栈底为1.2.3.4.5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他 ...
- 编程3:仅用递归函数和栈操作逆序一个栈
<?php header("content-type:text/html;charset=utf-8"); /** 仅用递归函数和栈操作逆序一个栈 P8*/function ...
最新文章
- oracle 远程exp导出,EXP远程导出完整Oracle数据库
- 关于C++模版的连接错误问题
- hibernate总结-N+1问题
- 一 流程控制之if判断
- MTD和 uboot中的bootargs 下属 mtdparts
- ACE(Adaptive Communication Environment)介绍
- Android笔记 采用httpclient提交数据到服务器demo
- Linux的最大文件限制数ulimit
- Pytorch的可视化工具tensorboardX
- LCIS最长公共上升子序列
- 系统字体服务器,把字体放到服务器
- overload方法重载
- 计算机无法访问e盘,win10系统E盘拒绝访问的详细方法
- u盘安装原版window10系统
- 007数据分析能力:业务题
- Flutter 插件开发:iOS篇
- LINUX TC介绍
- 英国G5、亚洲top1…未明学员斩获15枚世界top100学校offer!
- DSShop单店铺商城B2C功能列表清单
- java中di,初识Spring的DI及其基本用法
热门文章
- C语言——小鱼“比可爱”比赛
- 阿里云-邮件推送 java 代码 ,测试邮件推送服务,阿里云邮件推送,java
- python中坐标系的方向_使用python计算径向角度,顺时针/逆时针方向,给定像素坐标(反之亦然)...
- java如何获取手机号码_微信小程序+Java获取用户授权手机号码
- 构建vue-cli npm安装webpack报错原因 error -4075解决办法
- 4075 染色(并查集)
- 计算机二级使用多级符号对章名,计算机二级考试题目分析
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第21讲:PHP运行原理及编程规范
- Verilog中的有限状态机
- 联讯机顶盒直播点播系统方案,智能机顶盒,智能电视客户端