我写了一个图像检查器,现在我想知道如何将这个函数中的行数减少到(如果可能的话)一行。
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)
答案 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)