例如:names[王八,王九,李大,李二,赵四] for a in names: if a 姓王,names.remove(a) if a 姓李, names.remove(a) print(names) 结果不会留下[赵四],而是有[王九、李二、赵四],为什么会这样? for 循环不会把 5 个字符串遍历 5 次吗?
for a in names 实际执行逻辑类似 for i in range(len(names)): a=names[i] 第一遍执行,i=0,移除“王八”,names=[王九,李大,李二,赵四] 第二遍执行,i=1,a=李大,移除,names=[王九,李二,赵四] 第三遍,i=2,a=赵四,后面就不用多说了吧
xiri
2020-02-22 22:32:21 +08:00
@xiri 注意这个 range(len(names)),就算后面 len(names)发生变化,对 i 的取值也不会有影响(可以理解成在第一次执行是生成了一个列表,后面是在这个列表中迭代,不会再计算了)