今天在实现论文上的算法时,使用python的list中的remove函数时,发现没有按照自己的预期运行,贴上代码
- 包含 连续 多个 一块 要删除的项目(a,a,b,c,d)
lista = [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7]] for item in lista: if 2 in item: lista.remove(item) print(lista)
期望输入 [[3, 4], [4, 5], [5, 6], [6, 7]]
实际输出 [[2, 3], [3, 4], [4, 5], [5, 6], [6, 7]]
- 包含 不连续 一个 多块 要删除的项目(a,b,c,d,e,a)
lista = [[1, 2], [3, 4], [2, 3], [4, 5], [5, 6], [6, 7]] for item in lista: if 2 in item: lista.remove(item) print(lista)
#期望输入:[[3, 4], [4, 5], [5, 6], [6, 7]]
#实际输出:[[3, 4], [4, 5], [5, 6], [6, 7]]
- 包含 连续 多个 多块 要删除的项目
lista = [[1, 2], [3, 4], [2, 3], [2, 5], [5, 6], [6, 7]] for item in lista: if 2 in item: lista.remove(item) print(lista)
#期望输入:[[3, 4], [5, 6], [6, 7]]
#实际输出:[[3, 4], [2, 5], [5, 6], [6, 7]]
在要删除的list上存在多个要删除的连续项目,会保留最后一个
原因:删除会导致下标会往后移一位
解决办法:使用新的list append满足情况的元素