python迭代列表中删除项目问题的示例分析
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章将为大家详细讲解有关python迭代列表中删除项目问题的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题:有这段代码:numbers = rang
千家信息网最后更新 2025年11月08日python迭代列表中删除项目问题的示例分析
这篇文章将为大家详细讲解有关python迭代列表中删除项目问题的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
问题:
有这段代码:
numbers = range(1, 50) for i in numbers: if i < 20: numbers.remove(i) print(numbers)
但得到的结果是:
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49]
当然,希望低于 20 的数字不会出现在结果中。看起来在删除时做错了什么。
解决方法
在迭代列表时正在修改列表。这意味着第一次通过循环,i == 1,所以1从列表中删除。然后for循环转到列表中的第二项,它不是2,而是 3!然后从列表中删除它,然后for循环继续到列表中的第三项,现在是 5。依此类推。也许像这样更容易形象化,用 ^ 指向的值i:
[1, 2, 3, 4, 5, 6...] ^
这就是列表最初的状态;然后 1 被删除,循环转到列表中的第二项:
[2, 3, 4, 5, 6...] ^[2, 4, 5, 6...] ^
等等。
在迭代列表时没有改变列表长度的好方法。你能做的最好的事情是这样的:
numbers = [n for n in numbers if n >= 20]
或者这个,对于就地更改(括号中的东西是一个生成器表达式,它在切片赋值之前被隐式转换为一个元组):
numbers[:] = (n for in in numbers if n >= 20)
如果您想在删除之前对 n 执行操作,您可以尝试的一个技巧是:
for i, n in enumerate(numbers): if n < 20 : print("do something") numbers[i] = Nonenumbers = [n for n in numbers if n is not None]关于"python迭代列表中删除项目问题的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
迭代
循环
问题
篇文章
示例
项目
分析
方法
更多
结果
不错
实用
依此类推
东西
事情
代码
内容
就是
形象
意味
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
文件服务器不能访问
西安云纳网络技术有限
3ds网络安全模式怎么进
网络安全升旗活动方案
数据库系统 技术指标
河北华为服务器虚拟化解决方案
材料价格数据库
c 大并发服务器开发
数据库和引文索引的区别
搭建一个服务器多少钱
中小型公司网络安全设计方案
西安朗生网络技术
浅谈计算机病毒与网络安全
大型数据库系统答案
合肥点餐系统软件开发公司
万州软件开发培训
网络安全教育主题团日活动简报
网络安全的专题班会素材
常州溧阳dns服务器
奇瑞汽车软件开发
九阴真经最早的服务器
网络技术和计算机应用的区别
如何确保网络安全防止失泄密
网络安全保卫局省市单位
重症监护医学信息数据库
从网络安全的角度看
6108改打印服务器
服务器在香港意味着啥
软件开发微课
软件开发是税率