美文网首页
python3 list遍历时删除

python3 list遍历时删除

作者: matthewfly | 来源:发表于2021-01-14 16:29 被阅读0次

    问题:python3遍历list过程中通过list的remove删除列表元素后,将导致遍历元素不完整。

    复现:

    from typing import List
    
    
    def _check(data: List[str]):
        for n in data:
            print(n)
            if len(n) > 1:
                data.remove(n)
    
    
    if __name__ == '__main__':
        names = ['fad', '1213', 'a', '13f']
        print(names)
        _check(names)
        print(names)
    

    输出:

    ['fad', '1213', 'a', '13f']
    fad
    a
    13f
    ['1213', 'a']
    

    分析结果,没有打印1212,因为第一个元素fad下标0,被删除后,下一个遍历下标1变成了元素a。

    解决办法:
    1.使用filter函数:

        t = names
        print(list(filter(lambda x: len(x) <= 1, t)))
    

    2.新建一个list作为结果集

    相关文章

      网友评论

          本文标题:python3 list遍历时删除

          本文链接:https://www.haomeiwen.com/subject/mymvaktx.html