【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个数值
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lys_828

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值