【python】del删除列表元素的索引问题

下面代码是否能够正确运行,若不能请解释原因;若能,请分析其执行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bwjzk7VZ-1579506822493)(F6C55FFF6B7B4F128D039276E3E61D45)]

遇到程序已经给出了代码,一定要自己动手在程序里面跑一下,运行结果如下:

在这里插入图片描述

报错类型:如果不懂英文单词什么意思的话,可以借助软件进行翻译,这里是索引错误,列表分配索引超出范围(百度翻译给出的结果),用人话说就是:x[i]里面的i值大于列表的实际长度,才出现报错

调试:在del语句的前后都添加print语句

①首先看一下在进行del语句的前后x[i]的数值是多少

在这里插入图片描述

②如果这里不明白的话,再添加部分代码如下

在这里插入图片描述

③尝试再添加一些代码,补充输出

在这里插入图片描述

输出结果分析

从最后一张图中可以看出,最后可正常运行时候x列表长度是10,索引下标的值为9,那么下一步的运行就是x列表长度是9,索引下标的值为10,这也就是产生了报错:x[i]里面的i值大于列表的实际长度

问题:

下面两种代码的逻辑不是一致的吗?怎么会输出不同呢?
在这里插入图片描述
在这里插入图片描述

代码调试如下图:

在这里插入图片描述
在这里插入图片描述

问题总结

这里存在着认识错误,每执行一次del语句,x列表里面的数据就少了一个,那么len(x)自然也就不会是固定的数值:20。随着运算的进行,列表的长度变小,当下标索引值为6(从0开始,到6,运行了7次),这时候已经不满足第一种代码的if判断,也就不运行del语句。但是第二种没有if判断,纯粹的要删除10个元素(列表的长度是20),所以最后输出和删除的都是10个数值

发布了20 篇原创文章 · 获赞 4 · 访问量 1976

猜你喜欢

转载自blog.csdn.net/lys_828/article/details/104052841