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

为什么结果还有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
  • 参与学习       758524    人
  • 解答问题       8667    个

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

进入课程

为什么结果还有Lisa

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