如何使用更优雅的语法遍历非空且非None的两个目标目录?
更优雅的目录遍历实现方式
当然有啦!针对你这个需求,Python里有几种更简洁优雅的写法,既能保持代码可读性,又能减少冗余的判断语句:
方法一:列表推导式(最常用)
直接用列表推导式一步生成符合条件的目录列表,逻辑清晰又紧凑:
data_directories = [dir_path for dir_path in [dirA, dirB] if dir_path] for data_directory in data_directories: # 执行你的遍历逻辑 ...
这里把dirA和dirB放进临时列表,通过if dir_path筛选出非空(Python中None、空字符串都会被判定为False)的目录,完美匹配你“非None且非空字符串”的要求。
方法二:生成器表达式(无需保存列表)
如果不需要保留data_directories这个列表,只是要遍历符合条件的目录,可以直接用生成器表达式,省掉中间列表的内存开销(虽然两个元素影响不大,但养成好习惯很重要):
for data_directory in (dir_path for dir_path in [dirA, dirB] if dir_path): # 执行你的遍历逻辑 ...
方法三:filter函数(简洁但可读性稍弱)
用filter函数也能快速过滤出有效目录,不过可读性不如前两种,适合追求极简的场景:
data_directories = list(filter(None, [dirA, dirB])) for data_directory in data_directories: # 执行你的遍历逻辑 ...
filter(None, 迭代对象)会自动过滤掉所有布尔值为False的元素,和你原来的判断逻辑完全一致。
这几种写法都和你当前的实现逻辑等价,但代码更简洁优雅,也更符合Python的风格~
内容的提问来源于stack exchange,提问作者william007
相关产品推荐
相关产品推荐

