Python 报错 ValueError list

在开发代码的过程中,经常会遇到这样的错误:

<code class="language-python">ValueError: list.remove(x): x not in list

报错信息也很清楚,就是被移除的元素不在列表中。

例如:

>>> lst = [1, 2, 3]
>>> lst.remove(4)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: list.remove(x): x not in list

但是还有另一种情况也会引发这个错误,那就是在循环中使用方法的时候。

一个例子:

>>> lst = [1, 2, 3]
>>> for i in lst:
...     print(i, lst)
...     lst.remove(i)
...
1 [1, 2, 3]
3 [2, 3]
>>>
>>> lst
[2]

输出不是我们预期的。

如果是双循环呢?会有点复杂。这是另一个例子:

>>> lst = [1, 2, 3]
>>> for i in lst:
...     for a in lst:
...         print(i, a, lst)
...         lst.remove(i)
...
1 1 [1, 2, 3]
1 3 [2, 3]
Traceback (most recent call last):
  File "", line 4, in 
ValueError: list.remove(x): x not in list

这种情况下输出比较混乱,而且还会报错。

如何解决?解决方法也很简单,就是每次循环使用列表的副本。

看修改后的代码:

>>> lst = [1, 2, 3]
>>> for i in lst[:]:
...     for i in lst[:]:
...         print(i, lst)
...         lst.remove(i)
...
1 [1, 2, 3]
2 [2, 3]
3 [3]

没关系。

以上就是本文的全部内容。如果觉得还不错,请点赞、转发、关注环境。感谢您的支持。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片