首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python - Efficiency -在调用filter()之前检查list是否为空?

Python - Efficiency -在调用filter()之前检查list是否为空?
EN

Stack Overflow用户
提问于 2018-10-01 16:49:49
回答 1查看 93关注 0票数 1

我有一个文件列表,我需要过滤可接受的文件类型(例如,只保留".txt“文件)。然后,当且仅当它不为空时,我才会对最终列表“做一些事情”。我的原始代码(带有玩具列表)是:

代码语言:javascript
复制
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“语句。

EN

回答 1

Stack Overflow用户

发布于 2018-10-01 16:58:46

在我看来,您可以删除第一个if语句。另请注意,您可以只使用列表理解,这通常被认为是Pythonic式的。对于更大的列表,它至少应该比filter +自定义函数更有效:

代码语言:javascript
复制
files = ['file1.txt', 'file2.txt', 'file3.txt']
files = [fn for fn in files if check_filetype(fn)]

if files:
    # do something
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52587490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档