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

程序报错,求解答

s = set(['Adam', 'Lisa', 'Paul'])
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for name in s:
    if name in L:
        s.remove(name)
    else:
        s.add(name)
print s

为什么这么写就会报错呢。从逻辑上来说拿A和B比跟拿B和A比是一样的啊,求解答

正在回答

4 回答

报错是:RuntimeError: Set changed size during iteration

因为你在遍历 s 的时候,不能删除 s 里的元素,这是初学者一个常见的错误。

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

for循环取完s里所有元素都不会出现L里多出来的元素Bart,所以不会被添加到s中

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

按照你这种代码,那么第5行和第7行的s改成L可以运行不

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

是不一样的,你在s中取值不会出现不在L中的情形,也就是说,在L中的元素无法添加到s中,也就是else永远无法执行。

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

举报

0/150
提交
取消
初识Python
  • 参与学习       758626    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

程序报错,求解答

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