python的一个for 与 if 嵌套问题

代码如下:

s= ["adam","xxx","lisa"]

L= ["adam","xxx","lisa","bart"]

for x in L:

print "this is ---%s" % x
if x in s:
    print x
    L.remove(x)


print L

结果如下:
this is ---adam
adam
this is ---lisa
lisa

['xxx', 'bart']
[Finished in 0.2s]

为何'xxx'直接被无视了???

阅读 5.2k
3 个回答

程序运行如下

循环1,x指向L中的adam:
打印 this is ---adam
打印 adam
移除了L中的adam,x指向L中的xxx
循环完毕,x继续往下走,指向L中的lisa

循环2,x指向L中的lisa
打印 this is ---lisa
打印 lisa
移除了L中的lisa,x指向L中的bart
循环完毕,x继续往下走,走不下去了,整个循环结束

不是被无视了,而是位置变了

这么写看你能否理解(python3):
s = ["adam", "xxx", "lisa"]
L = ["adam", "xxx", "lisa", "bart"]
for x in L[:]:
    print("this is ---%s" % x)
    if x in s:
        print(x)
        L.remove(x)
print(L)
输出
this is ---adam
adam
this is ---xxx
xxx
this is ---lisa
lisa
this is ---bart
['bart']
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题