python列表的逆序遍历实现


Posted in Python onApril 20, 2020

引题:该题源自一个网友的求助,作为水群龙王的我义不容辞的接下了这道题目,先来看题目:

python列表的逆序遍历实现

拿到这道题,题目的意思已经很清楚了,列表里含有2的元素都需要删除,然后输出删除后的新列表。我首先想到的思路就是使用for循环遍历字符串,利用字符串操作符x in s(如果x是s的子串,返回True,否则返回False),使用if函数 ,若为True则删除(remove)该元素。最终输出新列表。

     思路代码及运行结果如下(这是错的)

python列表的逆序遍历实现

错误实例

观察输出结果,跟原列表相比虽然剔除了一些含2的元素,但是并没有完全剔除,为什么?

 来分析一下python是根据列表元素的下标来遍历的。于是最开始元素123下标为1, 元素212下标为2。第一遍循环执行了s.remove,删除了元素123。当进入第二遍循环时!!!重点来了,注意 此时元素123已经是被删除了, 所以元素212的下标由1变成了0,元素434下标由2变成了1。而下标为0已经在第一遍循环中执行了,故第二遍循环会寻找下标为1的元素。

写到这 想必大家已经知道为什么输出结果中212没有被删除,因为这2货压根就没有被python发现,坐上了前一个元素的位置逃过了例行检查。元素1215为什么也没被删除??因为它下标变成了前面的元素231的位置,逃过了python大哥的例行检查。

好了,出错的原因已经找到了,怎么解决呢?遍历呢就像一条路,你可以从路的起点走到终点,也可以从路的终点走到起点。刚才我们是正序遍历,解决不了问题,那我们倒过来呢?试一下。

倒序遍历的结构可以是这样的: for i in range(len(s)-1,-1,-1)

代码及运行结果如下(这是正确的)

python列表的逆序遍历实现

正确实例

可以看到 我们已经得到了想要输出的结果,关于为什么倒序不会出现问题这里不再过多解释 (因为我不知道怎么解释哈哈哈)只用记住利用for循环遍历删除元素时应该从后往前遍历,否则会出现列表越界的情况。

除了使用remove方法外 我们还有没有别的选择呢?当然是有的咯 python别的不多就是函数超级多。

总结实现列表逆序遍历方法可以有如下几种(还有更多):

python列表的逆序遍历实现

多种方法总结

到此这篇关于python列表的逆序遍历实现的文章就介绍到这了,更多相关python列表的逆序遍历内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
跟老齐学Python之眼花缭乱的运算符
Sep 14 Python
Python字符串切片操作知识详解
Mar 28 Python
python中使用正则表达式的连接符示例代码
Oct 10 Python
[原创]windows下Anaconda的安装与配置正解(Anaconda入门教程)
Apr 05 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
在Python运行时动态查看进程内部信息的方法
Feb 22 Python
eclipse创建python项目步骤详解
May 10 Python
python 基于TCP协议的套接字编程详解
Jun 29 Python
解决django-xadmin列表页filter关联对象搜索问题
Nov 15 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
Pytorch 如何加速Dataloader提升数据读取速度
May 28 Python
Python集合set()使用的方法详解
Mar 18 Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 #Python
使用Python对Dicom文件进行读取与写入的实现
Apr 20 #Python
python 错误处理 assert详解
Apr 20 #Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 #Python
在ipython notebook中使用argparse方式
Apr 20 #Python
Python绘制全球疫情变化地图的实例代码
Apr 20 #Python
spyder 在控制台(console)执行python文件,debug python程序方式
Apr 20 #Python
You might like
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
2013/06/24 PHP
深入PHP许愿墙模块功能分析
2013/06/25 PHP
PHP文件操作详解
2016/12/30 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
img的onload的另类用法
2008/01/10 Javascript
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
AJAX跨域请求json数据的实现方法
2013/11/11 Javascript
JavaScript实现的日期控件具体代码
2013/11/18 Javascript
jquery跟js初始化加载的多种方法及区别介绍
2014/04/02 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
js实现上一页下一页的效果【附代码】
2016/03/10 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
jQuery插件autocomplete使用详解
2017/02/04 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
JS中数据结构之栈
2019/01/01 Javascript
Python常用模块用法分析
2014/09/08 Python
Python实现115网盘自动下载的方法
2014/09/30 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
Python+OpenCV实现将图像转换为二进制格式
2020/01/09 Python
Python3如何使用tabulate打印数据
2020/09/25 Python
详解pandas映射与数据转换
2021/01/22 Python
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
求职简历自荐信
2013/10/20 职场文书
工作睡觉检讨书
2014/02/25 职场文书
求职信名称怎么写
2014/05/26 职场文书
综治维稳工作承诺书
2014/08/30 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
redis配置文件中常用配置详解
2021/04/14 Redis
Spring Bean是如何初始化的详解
2022/03/22 Java/Android