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

请问我这个哪里错了呢?错误为:set changed size during iteration

请问我这个哪里错了呢?错误为:set changed size during iteration

马春杰杰 2017-06-23 11:19:36
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
查看完整描述

1 回答

已采纳
?
孤独的小猪

TA贡献232条经验 获得超302个赞

报错是因为在用for迭代集合s的时候,对集合s做了remove操作,更改了s的结构,导致报错,可以先深拷贝一个s,用拷贝出来的s做remove操作,代码如下:

import copy
s = set(['Adam', 'Lisa', 'Paul'])
s_2 = copy.deepcopy(s)
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for skey in s:
    for lkey in L:
        if lkey == skey:
            s_2.remove(skey)

print s_2

//img1.sycdn.imooc.com//594ccc3200019a8410270468.jpg

查看完整回答
3 反对 回复 2017-06-23
  • 1 回答
  • 0 关注
  • 2829 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信