python - 在 Python 的循环中使用 .remove
问题描述
我尝试了以下代码:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for x in arr:
if x > 3:
arr.remove(x)
print(arr)
它提供以下输出:
[1, 2, 3, 5, 7, 9]
相反,我认为它会从数组中删除每个大于 3 的元素。这是为什么呢?我怎样才能让它删除每个大于一定数量的元素?
解决方案
修改您正在迭代的列表经常会产生意想不到的结果。更好的选择是创建一个新列表:
arr = [x for x in arr if x <= 3]
推荐阅读
- flutter - 有人知道这个错误吗?我解决不了
- c# - Xamarin.Forms:如何下载图像,将其保存在本地并在屏幕上显示?
- sql - Laravel 查询生成器。列 if not null = 1 else = 0 在 select 方法中
- python - 无法摆脱这个循环
- jquery-ui - 在更新代码时尝试理解 requirejs、shim 和依赖项
- python - Pip install 未检测到的故障模式
- azure-devops - 自托管代理上的 Azure DevOps Python Pipeline Agent.ToolsDirectory 错误
- postgis - 如何在 PostGIS 数据库中存储值网格,以便 GeoServer 对其进行轮廓化?
- asp.net-mvc - 在 ASP.NET MVC 5 中将 SQL 查询转换为 lambda 表达式
- python - 自定义默认用户模型后 /admin/login/ 的 FieldError