python使用for循环报错list.remove(x): x not in list

Python与SEO 思享 164浏览

处理关键词有时候我们会用到python的for循环,代码小白的我碰到了一个问题,报错list.remove(x): x not in list。从列表中取出来的元素,删除竟然不在列表中?这到底是怎么回事呢?

首先来看一下我的代码:

for k in keywords:
    for key in keywords:
        if k in key and k != key:
            keywords.remove(k)

根据某度解惑,使用备份的列表循环,这样可以避免remove方法操作列表带来的问题《python厉遍列表删除元素list与list[:]的区别

于是我改成了

for k in keywords[:]:
    for key in keywords[:]:
        if k in key and k != key:
            keywords.remove(k)

但是问题依旧,最后,又重新理了一遍,发现是第二次循环没结束的原因。打个比方

list = ['百度', '百度SEO', '百度排名', '百度优化']

第一层循环当取值“百度”时,第二层取值“百度SEO”时,列表就会删除“百度”,但是第二层循环没有结束,还会继续取值“百度排名”,这时候又一次使用remove方法时,百度已经不在列表里了,所以报错。

解决办法也很简单,在remove方法使用后面后面加个break跳出第二层循环即可

推荐阅读

pycharm怎么用国内镜像安装第三方库

1、在pycharm中打开Terminal,如下图。 2、以安装pymysql库为例,输入以下命令回车即可使用镜像安装。 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pymysql ......

win10系统安装软件错误”The installer has encountered an unexpected error…error code is 2503″

在Windows10系统中,错误“安装程序在安装此软件包时遇到意外错误。这可能表明包装有问题。错误代码是2503。安装python3.8.9时报告了。安装程序在安装此软件包时遇到了意外错误。这可能表明行李有问题。...

python报错requests.exceptions.ConnectionError

http连接数超过了最大限制。默认情况下,连接是保持活动的,因此服务器保持太多的连接以至于无法创建新的连接。请求速度太快。...