我有一个文件列表,我需要过滤这些文件以选择可接受的文件类型(例如,仅保留“ .txt”文件)。然后,当且仅当它不为空时,我才对最终列表进行“处理”。我的原始代码(带有玩具清单)是这样的:
files = ["file1.txt", "file2.txt", "file3.jpg"]
if files:
files[:] = filter(check_filetype, files)
if files:
# do something with remaining .txt files
但是,我很好奇是否需要第一个“ if”语句,以便在过滤之前检查此列表是否为空。我进行了测试,filter()
将接受(并返回)一个空列表。
那么,在第一个“ if”语句中增加一个分支或过滤一个空列表哪个更有效?我倾向于删除第一个“ if”语句。
答案 0 :(得分:1)
我认为,您可以删除第一个if
语句。还要注意,您可以只使用列表推导,通常被认为是Pythonic。相对于filter
+自定义函数,它至少应该对较大的列表更有效:
files = ['file1.txt', 'file2.txt', 'file3.txt']
files = [fn for fn in files if check_filetype(fn)]
if files:
# do something