Python_遍历时删除的处理&说明

遍历时,建议不能直接进行remove删除,会跳过某些元素

实例:

a=[1,2,3,4,5] for i in a: a.remove(i) print a

a=[1,2,3,4,5]
for i in a:
    a.remove(i)
print a

结果:[2,4]

1、remove解释

  remove:移除列表中某个值的第一个匹配项:

s = [1,2,3,4,5]
s.remove(3)
s
[1, 2, 4, 5]

2、结果的说明:

按平常理解,应删除所有内容,然而不是,因为具体过程如下:

1、当第一次删除后,后面的元素会前移,此时a=[2,3,4,5], 
2、然后指针下一次会指向新列表的第二个元素(即初始状态的第三个位置),从而初始状态的第二个位置被跳过了,初始第三个位置被删除,接着后面的元素又再次前移(变成[2,4,5]) 
3、指针指向新列表的第三个元素,即初始状态的第5个元素5,然后5被删除了,因此只剩下[2,4]

说明:

*代表位置(可理解为指针位置)

[1,2,3,4,5](第一次位置在最开始)
*

[2,3,4,5] (删除一个元素后,位置进入下一个)
*

[2,4,5] (删除一个元素后,位置进入下一个)
*

[2,4] (最后结果)

打印结果:

a=[1,2,3,4,5]
for i in a:
    a.remove(i)
    print(a)

3、结论:

遍历时建议不要进行remove删除操作要


剔除某些元素,可参照如下方法:

实例:

想清空列表l,只留元素4。

1、利用index来遍历删除列表l

复制代码

l = [1,2,3,4,5]

for i in range(len(l)):

    if l[i] == 4:

        del l[i]

 

print(l)

复制代码

2、建立新的list存放要删除的元素

复制代码

l = [1,2,3,4,5]

dellist = []

for i in l:

    if i == 4:

        dellist.append(i)

for i in dellist:

    l.remove(i)

复制代码

这样也能达到预期删除的效果

*遍历时,删除元素一定要注意,特别是有些操作并不报错,但却没有达到预期的效果

猜你喜欢

转载自blog.csdn.net/bang152101/article/details/89086612