2017-02-15 66 views
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

使用條件列表理解:

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

驚人,只有一個問題打印'[]'如果是空的? –

+2

@Rizzit:'print([])'會做到這一點,但'布爾([])== False',所以你保持你的'if'的地方,它不應該打印什麼 – progo

0

嘗試lambda表達式的魔..

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

要使用它,這樣稱呼它

f(suff,myFiles) 
相關問題