为了账号安全,请及时绑定邮箱和手机立即绑定

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

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)


正在回答

5 回答

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

我把那几个#删除了,确实报错了,我的理解是你定义了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])


0 回复 有任何疑惑可以回复我~

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


0 回复 有任何疑惑可以回复我~

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


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信