关于#python#的问题:怎么理解这个循环体呢?

img
怎么理解这个循环体呢?为什么D还在内但是没有被移除反倒是打印出来了呢?不太理解 有人可以告诉我吗?

A,B,C,D1,D2,D3
第一次满足条件,删除D1,聊表变成了[A,B,C,D2,D3],这个时候D2顶替了D1的位置,已经循环遍历过了,下来满足条件的就是D3,删除了D3,还有一个D2,也就是[A,B,C,D]

这是一个比较经典的问题,就是遍历可变数据结构时要避免对结构的修改。
想知道为什么输出ABCD要注意数据结构的变化:

img

在遍历同一个可迭代对象时修改该对象的代码可能很难获得正确的结果,因此应尽量避免在循环遍历的过程中修改遍历的对象