list.remove方法在删除元素的时候往往会出现漏删或者索引越界的情况示例如下:

漏删:

lst=[9,25,12,36]

for i in lst:

if i>10:

lst.remove(i)

print(lst)

>>>[9, 12]

那么为什么12被漏删了呢?其实原理很简单,如图:

列表从下标为0开始遍历,遍历到25时,将25删除,返回一个新的列表:

注意,原来的25对应的下标是1,所以系统会从下标为2的地方开始遍历,但是在新列表中,下标为2的地方变成了36,所以12就被跳过了。

解决方法:

只需要判断如果列表中删除元素,就要重新从0开始遍历列表。

lst=[9,25,12,36]

while True:

for i in lst:

if i>10:

lst.remove(i)

#如果删除了元素,退出此次遍历,开始遍历新列表

break

else:

break

print(lst)

>>>[9]

索引越界:

当我们用下标遍历列表时,会出现索引越界的情况,如图:

lst=[9,25,12,36]

for i in range(len(lst)):

# print(i)

if lst[i]>10:

lst.remove(lst[i])

print(lst)

IndexError: list index out of range

原理都是一样的,这里 i 的取值为 0 1 2 3 ,当删除一个元素之后,新列表的长度减少,索引变为 0 1 2 ,但是 i 还是根据原来列表的索引取值,所以当 i 取到 3 的时候,新列表没有该元素,索引越界。

解决方法一:

lst=[25,9,12,36]

j=0

for i in range(len(lst)):

if lst[j]>10:

# 下面以j取0为例:

# j =0 时对应元素25被删除,

# continue的做法的意思是判断新列表的j元素即0元素是否符合条件

lst.remove(lst[j])

continue

# 如果新列表的j = 0 处不符合条件,j+1,然后再判断下一个元素。

j+=1

print(lst)

解决方法二(推荐):

如果让索引倒序遍历列表就不会出现越界的问题了。

这样就算新列表的长度减小了,那么i 的取值是倒着取的,列表缺少一个元素对 i 的取值无影响。

例如 i 为3 的元素被删除了,新列表最高索引为2 而此时 i的下一个取值正好是 2 ,没有影响。

lst=[9,25,12,36]

for i in range(len(lst)-1,-1,-1):

# i : 3 2 1 0

if lst[i]>10:

lst.remove(lst[i])

print(lst)

到此这篇关于Python中remove漏删和索引越界问题的解决的文章就介绍到这了,更多相关Python remove漏删和索引越界内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

python多维列表索引越界怎么处理_Python中remove漏删和索引越界问题的解决相关推荐

  1. Python中remove漏删和索引越界问题

    list.remove方法在删除元素的时候往往会出现漏删或者索引越界的情况示例如下: 漏删: lst=[9,25,12,36] for i in lst:if i>10:lst.remove(i ...

  2. python 二维列表_python二维列表

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 方法一:使用 lambda 关键词辅助对二维列表进行排序,lambda的使用方法 ...

  3. Python教程:python中二维列表的创建、访问、应用详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<Python中二维列表的创建.访问.应用详解>.本知识点主要内容有:二维列表的概念.直接定义二维列表.使用嵌套的for循环创 ...

  4. 案例演示Python二维列表与Java二维数组

    1.Python二维列表案例演示 运行程序,结果如下: 2.案例演示Java二维数组 package net.hw.test;/*** 功能:二维数组用法示例* 作者:华卫* 日期:2013年12月1 ...

  5. Python 二维列表按多列排序 反向排序

    Python 二维列表按多列排序 (有多个元素需要排序 代码 代码 两种方法均可 raw_list = [[6,2,'c'],[4,5,'b'],[7,8,'a']]sorted_list = sor ...

  6. Python二维列表转换为一维列表

    Python二维列表转换为一维列表 Python二维数组转换为一维数组 二维转一维 # 第一种写法 拆解的写法a = [] ab = [[1,2,3], [5,8], [7,8,9]] for ite ...

  7. Python二维列表赋值问题

    Python二维列表的赋值问题 使用该方法建立的二维列表,对a[0][0]进行赋值1,结果第一列全部被赋值为1: >>> a = [[0]*5]*5 >>> a [ ...

  8. Python 二维列表操作

    Python 二维列表操作 创建二维列表对象 初始化一个2*3尺寸大小的全零二维列表 获取二维列表行元素的个数 获取二维列表总元素个数 今天介绍一下 Python中二维列表的一些操作. 创建二维列表对 ...

  9. python二维列表

    python二维列表 1. 本质 2. 创建二维列表 3. "读" 二维列表 4. "写" 二维列表 5. 遍历二维列表 6. 练习1 7. 练习2 1. 本质 ...

最新文章

  1. 正面刚CNN,Transformer居然连犯错都像人类
  2. postgres创建用户,修改用户密码,创建数据库
  3. java web服务 分层,java web分层之——三层架构
  4. 奥格斯堡大学计算机系,奥格斯堡大学七大科系设置简介
  5. 编写.gitignore文件
  6. nova 宿主机重启自动恢复虚拟机运行状态
  7. L3-002. 堆栈-PAT团体程序设计天梯赛GPLT(树状数组)
  8. [Regular] 4、正则表达式的匹配原理原则
  9. jquery可见性过滤选择器:hidden、:visible
  10. ZK 数据传输四:BackingBean获取spring层类再获取数据(jsp页面或zul页面)
  11. 计算机设备管理中的其他设备,解决方法:计算机设备管理器中的“其他设备”驱动程序问题!...
  12. 安卓 IOS 抓包工具介绍、下载及配置
  13. 北京工业大学计算机考研813,北京工业大学2020年考研813电工学考试大纲
  14. python采集世界大学排名并作数据可视化, 来看看你的母校上榜没~
  15. server sql 将出生日期转为年龄_SQL语句如何根据出生日期计算年龄
  16. 如何高情商地在职场和生活中正确聊天
  17. 计算机教学考核方案,计算机专业技能课教学目标考核方案_图文.pdf
  18. QXlsx(访问Excel)
  19. socket 长链接linux,手把手教你写 Socket 长连接
  20. S12X微处理器的XGATE协处理器使用指南

热门文章

  1. vue 项目中 自定义过滤器 全局使用 filter
  2. bootstrap栅栏系统 解决当弹窗口变小的时候变成1列问题
  3. knn算法java版_KNN算法的实现详解
  4. 朗读评价语言集锦_表扬朗读好的评语简短
  5. 80% 的学校还在给新生上 C 语言,它们 OUT 了吗?
  6. 从技术到应用实践,揭秘京东区块链布局全景
  7. 编码的未来是“无代码”
  8. Java 14 有哪些新特性?
  9. 12306 回应软件崩了;微信发布新版本,朋友圈可“斗图”;Ant Design 3.26.4 发布 | 极客头条...
  10. 为什么别人年底购物,同学们年底考证?