迭代时集合大小改变

2 投票
2 回答
6702 浏览
提问于 2025-04-18 12:20

我刚开始学Python,之前是用C++的。我在玩集合(sets)的时候,想计算素数,结果遇到了一个错误:“在迭代过程中集合的大小发生了变化”。

Python是怎么知道在迭代的时候集合的大小变了呢?

在用户自定义的对象中,也能做到类似的事情吗?

2 个回答

2

如果你自己定义了一个对象,这个事情就简单了:每次你修改这个对象的时候,设置一个标记,然后在迭代器每次尝试获取一个项目时检查这个标记。

通常来说,在遍历一个集合的时候不应该修改它,因为这样可能会导致漏掉某个项目,或者同一个项目被获取两次。

6

在Python中,过滤集合、列表或字典的最简单方法就是使用列表(或字典)表达式。

your_filtered_set = set([elem for elem in original_set if condition(elem)])

撰写回答