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

改成了如果s中有L元素,就删除L元素,但’Lisa'没有被删除?

s = set(['Adam', 'Lisa', 'Paul'])
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for name in L:
    if name in s:
        L.remove(name)
    else:
        s.add(name)
            
print (L)
print (s)
#输出结果为
#['Lisa','Bart']
#set=(['Adam','Lisa','Paul','Bart'])
#为什么List中的'Lisa'没有被删除?


正在回答

6 回答

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

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

# 遍历的时候把L改成L[:]就可以了

for name in L[:]:

    if name in s:

        L.remove(name)

    else:

        s.add(name)

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

删除了Adam之后,Lisa变成了L的第一个元素,但是for此时要按顺序要调用的name是第二个元素Bart,Lisa直接被跳过去了。

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

Line5   应该是s.remove(name) 

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

哦哦才看出来你的问题为什么会有lisa。。。因为adam作为0已经被删掉了,lisa成为0之后就被跳过直接删除bart了。

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

第五行应该是s.remove(name)而不是L.remove(name)哈~

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

缩进没有问题,复制输入的时候多了空格。

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

举报

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

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

进入课程

改成了如果s中有L元素,就删除L元素,但’Lisa'没有被删除?

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