2017-02-15 5 views
2

私はイメージチェッカーを書いていますが、今はどのようにしてこの関数の行数を(可能なら)1行に減らすことができますか?機能を1行に減らすことはできますか?

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

驚くべきのようにそれを呼び出す使用するには...

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

をラムダの魔法を試してみてください空であれば '[]'と表示されますか? –

+2

@Rizzit: 'print([])'は 'bool([])== False'ですが、' if'をそのままにしておくと、何も印刷しません – progo

0

はただ一つ、それは

f(suff,myFiles) 
関連する問題