是否可以将功能减少到一行?
Is it possible to reduce function to one single line?
我写了一个图像检查器,现在我想知道如何将此函数中的行数减少到(如果可能)一行。
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)
使用条件列表理解:
[filename for filename in myFiles if filename.endswith(suff)]
试试 lambda 的魔力..
f = lambda suff,l:filter(lambda x: '.'+x.split('.')[-1] in suff,l)
要使用它,请像这样称呼它
f(suff,myFiles)
我写了一个图像检查器,现在我想知道如何将此函数中的行数减少到(如果可能)一行。
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)
使用条件列表理解:
[filename for filename in myFiles if filename.endswith(suff)]
试试 lambda 的魔力..
f = lambda suff,l:filter(lambda x: '.'+x.split('.')[-1] in suff,l)
要使用它,请像这样称呼它
f(suff,myFiles)