python - Python list.remove()
问题描述
任务是从列表中删除所有零,因此我编写了以下代码:
a = [9, 0, 0, 9, 1, 2, 0, 1, 0, 1, 0, 3, 0, 1, 9, 0, 0, 0, 0, 9]
for i in a:
if i == 0:
a.remove(i)
print(a)
输出是:
[9, 9, 1, 2, 1, 1, 3, 1, 9, 0, 0, 0, 9]
由于某种原因,它只在倒数第二个 9 之后删除一个零,然后停止。谁能解释为什么它不删除每一个?
解决方案
您的问题是您在迭代列表时正在更改列表。做这个:
a = [9, 0, 0, 9, 1, 2, 0, 1, 0, 1, 0, 3, 0, 1, 9, 0, 0, 0, 0, 9]
a = [a for a in a if a != 0]
print(a)
印刷[9, 9, 1, 2, 1, 1, 3, 1, 9, 9]
推荐阅读
- kotlin - Kotlin 错误:我是 Kotlin 编程的初学者并提出了这个错误
- html - 如何以适当的间距从网站中提取描述部分?
- php - 如何使用 PDO 准备语句/位置占位符来运行此 PHP 注册脚本?
- java - 无法将 CSS 类添加到我的 JavaFX 标签
- spring - 在我的 spring mvc 项目中添加 requestmapping 注释
- python - Altair - 在 x = y 的绘图中画一条线
- python - 从 python 脚本执行命令行程序(Abaqus-python 脚本)
- r - 使用 R 中的 ggplot2 按顺序循环打印大量图形 (PDF)
- entity-framework - System.TypeInitializationException 发生
- sqlite - 连接多个表 Sqlite Flutter