是否可以将功能降低到一条线?

时间:2017-02-15 09:21:20

标签: python python-2.7 ends-with

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

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)

2 个答案:

答案 0 :(得分:4)

使用条件列表理解:

[filename for filename in myFiles if filename.endswith(suff)]

答案 1 :(得分:0)

尝试lambdas的魔力..

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

要使用它,请将其称为

f(suff,myFiles)