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

请问这个是哪里出问题了呢?错误提示:set changed size during iteration

s = set(['Adam', 'Lisa', 'Paul'])
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for skey in s:
	for lkey in L:

		if lkey == skey:
			s.remove(skey)

print s


正在回答

7 回答

可能是因为:第一次循环到skey为'Adam'的时候,lkey也是‘Adam’,这个时候s的这个值‘Adam’就会被删掉了,但是内循环还没有结束,判断  if lkey == skey:这个的时候,其实根本找不到skey值



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

马春杰杰 提问者

谢谢帮助,谢谢。
2017-06-23 回复 有任何疑惑可以回复我~

学习了

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

谢谢大家的回答,大家回答的都很好啊,只是只能选一个最佳,抱歉啊

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

谢谢大家的回答,谢谢

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

在做for循环时将自己做了迭代操作,结果自身的结构发生了变化,大小也跟着变化了,原来的结构没法保存这个值了,因此报错。

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

我查了一下 应该是因为不能在遍历过程中修改其size,所以你应该遍历的是L而不是s

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

为什么要用双重循环呢,直接用if skey in L 就可以了呀

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

举报

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

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

进入课程

请问这个是哪里出问题了呢?错误提示:set changed size during iteration

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