python - 如何在for循环中删除列表的元素
问题描述
我正在尝试使用 for 循环从列表中删除元素.remove()
,但 for 循环正在与一个不存在的值进行比较,并在它是最后一个元素时引发错误。
这就是我想要做的:
print(positions)
for n in nk:
if n in nQ:
print(n)
positions.remove(n)
print(positions)
nk
并且nQ
都是列表,我想删除其中的nk
元素nQ
。
当它不是列表中的最后一个元素时,它会返回它,这没关系:
[1, 5], [0, 5], [0, 4], [0, 3], [1, 3], [2, 3], [2, 4], [2, 5]]
[0, 3]
[[1, 5], [0, 5], [0, 4], [1, 3], [2, 3], [2, 4], [2, 5]]
[1, 3]
[[1, 5], [0, 5], [0, 4], [2, 3], [2, 4], [2, 5]]
[2, 3]
[[1, 5], [0, 5], [0, 4], [2, 4], [2, 5]]
但是当它是最后一个元素时,会发生这种情况:
[[2, 7], [4, 7]]
[2, 7]
[[4, 7]]
[2, 6]
Traceback (most recent call last):
File "main.py", line 379, in <module>
print("Black King Moves:", findMovementsFork(board))
File "main.py", line 255, in findMovementsFork
positions.remove(n)
ValueError: list.remove(x): x not in list
来自哪里[2, 6]
,我该如何解决?
解决方案
迭代列表时不能删除元素。
您可以使用列表理解:
filtered_nk = [e for e in nk if e not in nQ]
推荐阅读
- javascript - 网络图中的图例(Highchart Js)
- authentication - Servant 客户端如何处理收到的 cookie?
- python - 无法从 docker 容器创建 kunerbetes pod
- javascript - sessionStorage 在新选项卡上打开链接时会被清除,但在同一选项卡上打开链接时会保留。为什么?
- python - 当 USB 摄像头断开连接时,VideoCapture read() 返回 True
- node.js - 为什么孩子的resolve函数不包含父母的resolve函数的结果?
- python - 将变量列表加载到 sqlalchemy 文本查询中
- join - 在 hive 中加入 2 个大表时顶点失败
- azure-devops - Azure Devops 中的多分支管道
- activecollab - 如何在 ActiveCollab 中使用 API