python迭代列表中删除项目问题的示例分析
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章将为大家详细讲解有关python迭代列表中删除项目问题的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题:有这段代码:numbers = rang
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
csgo社区图与服务器不符
软件开发项目组是什么样的
软件开发培训会议记录表内容
数据库的三级分类
安徽科圣互联网科技
电脑服务器终止怎么回事
喜宴下载软件开发
安庆医疗软件开发定制
信息传播与网络安全论文
网络安全性在哪设置
网络安全标准制定的重要性
长沙县学习软件开发培训
网络安全威胁实时地图怎么看
网络技术面试模型
网络安全编程密码置换
记录u盘读写数据库
服务器在一个系统的作用
服务器安全监测
财经搜索软件开发
江财网络安全协会
辽警网络安全与执法专业
vpn服务器未响应
会破坏正在运行的数据库的是
数据库自动审计有什么用
图片数据库怎么收藏
数据库被格式化
学软件开发的高职学校官网
mdm服务器url在哪里
潮流网络技术有限公司估值
省联社网络安全建议