python - 在 Python3 中删除列表中的项目作为 for 循环 - 奇怪的行为
问题描述
lst = [1,2,3,4,5]
def rem_items(lst):
for i in lst:
print(lst)
time.sleep(1)
lst.remove(i)
rem_items(lst)
返回
[1, 2, 3, 4, 5]
[2, 3, 4, 5]
[2, 4, 5]
我可以理解前两行,但为什么它删除了 3 而不是 2?
为什么它在删除 3 而不是 2、4、5 后停止?
提前致谢
解决方案
您在迭代列表时正在修改列表。这通常是一件坏事,并且可能导致不可预测的结果。
有关更多信息,请参见此处: 在迭代时修改列表
推荐阅读
- mongodb - MongoDB - 基于另一个字段值的 $match
- node.js - 听 EACCES:Windows 中的权限被拒绝
- azure - 使用 API 从 Azure 获取所有诊断设置
- angular - Nativescript:在线程内工作地理定位?
- python - django.db.utils.InterfaceError: 更新到 Django 3.0 时连接已关闭失败
- three.js - Threejs网格矩阵getInverse Uncaught TypeError:无法读取未定义的属性“元素”
- python - 为什么我应该解决时仍然收到“NoneType”错误?
- spring-boot - 将以下划线“_”开头的请求参数(GET 查询)绑定到 bean 属性
- java - 如何写一个 Dockerfile 依赖于其他镜像
- python-3.x - 如何在 Alexa-host 自定义技能中将 feedparser 作为外部包导入