2

我写了一个图像检查器,现在我想知道如何将这个函数中的行数减少到(如果可能的话)一行。

myFiles = ['image94.jpg','image95.png','image96.jpg','movie97.mov']
suff = ('.jpg', '.png')

# Check if files are images
def checker(suff):
    imageFiles = []
    for files in myFiles:
        if files.endswith(suff):
            imageFiles.append(files)
    return imageFiles

if checker(suff): print checker(suff)
4

2 回答 2

4

使用条件列表推导:

[filename for filename in myFiles if filename.endswith(suff)]
于 2017-02-15T09:23:46.053 回答
0

试试 lambdas 的魔力..

f = lambda suff,l:filter(lambda x: '.'+x.split('.')[-1] in suff,l)

要使用它,可以这样称呼它

f(suff,myFiles)
于 2017-02-15T10:01:28.147 回答