初学python,编制一个批量文件名重命名的程序时,需要对一个 list 进行筛选和删除。大概思路是用快速遍历并删除,但是实现的时候遇到了问题。原因是遍历时如果有删除操作会导致 list 的长度发生变化,但是 for 的遍历终点并不会根据实际长度实时刷新。
解决过程中想到了 list 首元素的下标会保持 0 不变,如果对列表进行反向遍历就不会发生越界的问题。如果删除第 i 个元素,那么刚才遍历过的原数列第 i+1 个元素只会被重复遍历一次,而这样的代价是可以接受的。
import os
fileList = os.listdir('./captures')
for i in range(len(fileList)-1 ,-1 ,-1)
if fileList[i][-4:] != '.mp4' : //过滤掉非mp4格式的文件
del fileList[i]