在开发代码的过程中,经常会遇到这样的错误:
<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]
没关系。
以上就是本文的全部内容。如果觉得还不错,请点赞、转发、关注环境。感谢您的支持。
© 版权声明
本站下载的源码均来自公开网络收集转发二次开发而来,
若侵犯了您的合法权益,请来信通知我们1413333033@qq.com,
我们会及时删除,给您带来的不便,我们深表歉意。
下载用户仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,访问及下载者下载默认同意本站声明的免责申明,请合理使用切勿商用。
THE END
暂无评论内容