首页 > 解决方案 > 如何在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],我该如何解决?

标签: pythonlistfor-loop

解决方案


迭代列表时不能删除元素。

您可以使用列表理解:

filtered_nk = [e for e in nk if e not in nQ]

推荐阅读