我有一个需要迭代的 python 集,对于每个元素,检查它是否满足约束,如果满足,请将其删除并将其添加到另一个可能已经非空的集合中。我可以将它添加到缓冲区,然后在循环完成后,遍历缓冲区并从集合中删除其内容,但必须有更好的方法来做到这一点。
这是我正在尝试做的事情:
for elem in S:
if (P(elem)):
S.remove(elem)
T.add(elem)
这行不通。
这是可行但不干净的修复程序:
B = set()
for elem in S:
if (P(elem)):
B.add(elem)
T.add(elem)
for elem in B:
S.remove(elem)
编辑:最好的解决方案似乎是:
for elem in S.copy():
if (P(elem)):
S.remove(elem)
T.add(elem)