处理关键词有时候我们会用到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跳出第二层循环即可