qq_41955956 2020-05-12 12:38 采纳率: 0%
浏览 272
已采纳

用python3查找1-20之间的素数,append函数和remove函数的效果为什么不同?

查找1-20之间的素数,用append函数和remove函数的效果为什么不同?

def test1(n):# 判断n是不是素数
    if n==1:
        return 1
    for i in range(2,n):
        if n%i==0:
            return n

num=list(range(1,21))

num1=[]

def test2():# 将一段区间内的所有素数存入一个列表
    for i in num:
        if None==test1(i):
            num1.append(i) 
    print(num1)

test2()

返回[2, 3, 5, 7, 9]

为什么下面的程序保留的是奇数,包括9这样的合数?

def test3():
    for i in num:
        if i==test1(i):
            num.remove(i) 
    print(num)

test3()
返回[2, 3, 5, 7, 9, 11, 13, 15, 17, 19]

  • 写回答

1条回答 默认 最新

  • 吃鸡王者 2020-05-12 17:04
    关注
    def test3():
        for i in num.copy():
            if i==test1(i):
                num.remove(i) 
        print(num)
    

    尽量不要在遍历列表的过程中去增删列表

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?