python在迭代列表的同时,remove列表中的元素?

foo = ['a', 'e', 'd']

for i in foo:
    foo.remove('a')
Traceback (most recent call last):
  File "test.py", line 4, in <module>
    foo.remove('a')
ValueError: list.remove(x): x not in list

这里foo.remove('a')为什么会出错?

阅读 1.9k
2 个回答

首先,尽量不要在循环中删除元素,会使元素下标移动容易造成问题。
此外,这这个问题,在其第一次循环的时候remove已经移除了list中的'a',此时list=['e','d'],所以你第二次循环remove找不到元素'a'自然会报错,请自行Debug查看过程。

新手上路,请多包涵

在循环中删除元素不是一个好的做法。
如果要删除列表中的元素,可以考虑先确定有多少个要删除的元素,
再根据这个值,多次调用remove。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题