arrays - 为什么我的 python 代码不删除所有等于目标的元素?
问题描述
我正在尝试删除数组中与目标相等的所有元素,这是一个相当简单的过程。但由于某种原因,它只删除了数组中目标的第一个元素,我不知道为什么。这是我的代码(python)
arr = [1,2,2,3,4,5,5]
for num in arr:
if num == 2:
arr.remove(num)
print(arr)
并将数组打印为 [1,2,3,4,5,5]。如果你们中的任何人知道出了什么问题,那就太好了。谢谢
解决方案
您的代码不会删除所有元素,因为删除第一个元素时列表的索引会减少 1。你的指针已经向前移动了。
相反,您可以这样做:
In [249]: arr = [1,2,2,3,4,5,5]
In [251]: list(filter(lambda a: a != 2, arr))
Out[251]: [1, 3, 4, 5, 5]
推荐阅读
- logic - 一阶逻辑中的替换
- python - 人员检测非常慢
- hyperledger-fabric - 如何在启用 tls 的多个主机上运行 Fabric-Ca 服务器/客户端?
- appkit - 如何使用自定义视图创建 NSToolbarItem
- javascript - 用重复的结果简化嵌套的 if/else?
- react-native - 获取火力基地详细信息后无法导航另一个页面
- c# - 文件“C:\Program Files\Microsoft SQL > Server\MSSQL11.SQLEXPRESS\”的 Tg 目录查找失败
- c - c语言中的互斥体和线程
- angular - 角图。它是什么?
- python - 在 Python 中加载模块时出错:OSError: [WinError 126] The specified module could not be found