Python 一行foreach循环删除列表中的可选元素

Python 一行foreach循环删除列表中的可选元素,python,Python,为什么一行foreach会删除列表中的可选元素,而不是删除所有元素?或者foreach循环的实现如何 aList = ['xyz', 1, 'zara', 2, 'xyz'] for i, ele in enumerate(aList): print(i, ele) aList.remove(ele) print(aList) 0 xyz 1扎拉 2 xyz [1,2] 第一次迭代,访问阵列的第一个元素: ['xyz',1'zara',2'xyz']删除xyz=>[1'zara

为什么一行foreach会删除列表中的可选元素,而不是删除所有元素?或者foreach循环的实现如何

aList = ['xyz', 1, 'zara', 2, 'xyz']
for i, ele in enumerate(aList):
    print(i, ele)
    aList.remove(ele)
print(aList)
0 xyz

1扎拉

2 xyz

[1,2]


第一次迭代,访问阵列的第一个元素:
['xyz',1'zara',2'xyz']
删除xyz=>
[1'zara',2'xyz']

第二次迭代,访问阵列的第二个元素:
[1,'zara',2,'xyz']
删除zara,因为zara现在是第二个元素=>
[1,2,'xyz']

第三次和最后一次迭代,访问阵列的第三个元素:
[1,2,'xyz']
删除xyz=>
[1,2]
第一次迭代,访问数组的第一个元素:
['xyz',1'zara',2'xyz']
删除xyz=>
[1'zara',2'xyz']

第二次迭代,访问阵列的第二个元素:
[1,'zara',2,'xyz']
删除zara,因为zara现在是第二个元素=>
[1,2,'xyz']

第三次和最后一次迭代,访问阵列的第三个元素:
[1,2,'xyz']
删除xyz=>
[1,2]

嘿@jpp,我认为这不是一个很好的dup目标question@Jpp我没有在你认为的答案中找到答案duplicate@jpp我同意一个更好。我仍然认为,他们两人都没有给出一个令人满意的答案,说明为什么会出现这样的问题,但除非OP明确要求,否则我认为他们已经解决了这些问题answers@MoxieBall,很公平,我会重开的。我认为OP需要解释为什么复制品对他们没有帮助。否则,这就是零研究。@MoxieBall我的意思是:嘿@jpp,我认为这不是一个很好的dup目标question@Jpp我没有在你认为的答案中找到答案duplicate@jpp我同意一个更好。我仍然认为,他们两人都没有给出一个令人满意的答案,说明为什么会出现这样的问题,但除非OP明确要求,否则我认为他们已经解决了这些问题answers@MoxieBall,很公平,我会重开的。我认为OP需要解释为什么复制品对他们没有帮助。否则,这就是零研究。@MoxieBall我的意思是: