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