python3 list遍历时删除

2021-01-14  本文已影响0人  matthewfly

问题: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作为结果集

上一篇下一篇

猜你喜欢

热点阅读