Python列表推导式如何添加非文件数量统计功能?
实现方案
方案1:显式循环(推荐,可读性最高)
直接把列表推导式拆解为普通循环逻辑,原有teeth的生成结果完全不变:
import os teeth = [] non_file_count = 0 for x in p: if os.path.isfile(x): teeth.append({"tooth_path": str(x)}) else: non_file_count += 1
执行后non_file_count就是你需要的非文件路径数量,teeth的结果和原代码完全一致。
方案2:保留推导式写法(适合不想改动原有推导式结构的场景)
可以借助可变容器作为计数器,在推导式的条件判断中完成统计:
import os non_file_count = [0] teeth = [{"tooth_path": str(x)} for x in p if os.path.isfile(x) or (non_file_count.__setitem__(0, non_file_count[0]+1) and False)] # 最终统计值取 non_file_count[0]
这个写法中or后面的逻辑只有在os.path.isfile(x)为False时才会执行,执行完计数后返回False,不会让非文件路径被加入teeth,完全保留原有推导式的输出结果。
内容的提问来源于stack exchange,提问作者caasswa
相关产品推荐
相关产品推荐

