gpt4 book ai didi

python - 在Python中迭代时从集合中删除集合

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:34 24 4
gpt4 key购买 nike

我正在尝试实现类似于埃拉托斯特尼筛法的东西。我想从集合中删除给定范围内的所有非素数,并将所有素数求和到给定的数字。

number_set = set(list(range(1, given_number)))
sum_number = 0
for num in number_set:
if isPrime(num):
sum_number += num
prime_set = set(list(range(0, big_number, num)))
number_set -= prime_set

print(sum_number)

显然我得到了错误 -

Set changed size during iteration

我是Python新手,所以语法不熟悉。据我从其他线程了解,我可以使用字典并在 number_set.keys() 上使用 for 循环(对吗?),但我想问,是否可以纠正这个 for 循环?

最佳答案

您必须停止对修改后的迭代器进行迭代。我的做法是修改后重新开始迭代,尝试修改集合,比如每个已经处理过的值都不重新处理,也许就到此为止。

您遇到的异常(exception)只是集合不喜欢同时迭代和修改的限制。

number_set = set(list(range(1, given_number)))
sum_number = 0
done = False

while not done:
for num in number_set:
if isPrime(num):
sum_number += num
prime_set = set(list(range(0, big_number, num)))
number_set -= prime_set
break
done = True

print(sum_number)

Disclaimer: Script might need adjustments on you part, I'm just illustrating the logic

关于python - 在Python中迭代时从集合中删除集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45871373/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com