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

为什么结果还有Lisa


s = set(['Adam','lisa','Paul'])

L = ['Adam','lisa','Bart','Paul']

for name in L:

    if name  in s:

        L.remove(name)

print L

['lisa', 'Bart']



正在回答

2 回答

调用remove方法之后,它的下标会自动右移,所以加上for的右移,一次产生两次片装,所以会漏掉lisa,你把lisa和paul换一下,那么结果会变成[paul,bart],有个笨办法可以达到你的效果

s = set(['Adam','lisa','Paul'])

L = ['Adam','bart','lisa','Paul']

for name in L:

    if name  in s:

        L.remove(name)
for name in L:

    if name  in s:

        L.remove(name)

print L


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

if name  in s:

此时用if,没有循环起来!

改为 for name in s:试试

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

举报

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

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

进入课程

为什么结果还有Lisa

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号