问答详情
源自:8-4 Python删除set元素

大佬们为什么报错帮忙解释一下 谢谢

L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

S = set([1, 3, 5, 7, 9, 11])

for a in L:

    print(a)

    for b in S:

        print(b)

        #if a == b:

        #    S.remove(a)

        #else:

        #    S.add(a)

print(L)


提问者:小白已就位 2022-05-24 21:46

个回答

  • qq_慕娘2512265
    2023-11-06 20:42:58

    这段代码中“for b in S”是错误的,因为在循环中修改了集合S的大小,导致了迭代器的大小发生了变化,从而引发了错误。

  • qq_慕娘2512265
    2023-11-06 20:39:12

    最后一行错了吧,应该是打印S

  • weixin_慕少4178098
    2023-02-10 14:56:16

    我把那几个#删除了,确实报错了,我的理解是你定义了a,b两个变量,都使用了for循环,然后用两个变量去进行对比,但S,L这两个长度不一样,所以报错了。你可以参考正确答案,里面只定义了一个变量,用L里的变量去判断S中是否有该变量来进行增加删除

    L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    S = set([1, 3, 5, 7, 9])
    for item in L:
        if item in S:
            S.remove(item)
        else:
            S.add(item)
    print(S) # ==> set([2, 4, 6, 8, 10])


  • weixin_慕尼黑2406156
    2022-05-29 12:34:25

    我这里复制粘帖了一下是可以运行的哦,可以看看是不是你那儿格式的问题


  • weixin_慕侠2281920
    2022-05-25 09:18:15

    你这应该是不会报错的啊,可以把具体报错的信息说出来嘛