检查string是否以列表中的某个string结尾
编写下面的代码的pythonic方式是什么?
extensions = ['.mp3','.avi'] file_name = 'test.mp3' for extension in extensions: if file_name.endswith(extension): #do stuff  我有一个模糊的记忆, for循环的显式声明可以避免,并在if条件写入。 这是真的? 
虽然不是广为人知,但str.ends也接受一个元组。 你不需要循环。
 >>> 'test.mp3'.endswith(('.mp3', '.avi')) True 
只要使用:
 if file_name.endswith(tuple(extensions)): 
从文件中获取一个扩展名,看它是否在扩展集中:
 >>> import os >>> extensions = set(['.mp3','.avi']) >>> file_name = 'test.mp3' >>> extension = os.path.splitext(file_name)[1] >>> extension in extensions True 
使用一个集合,因为在集合中查找的时间复杂度是O(1)( docs )。
我有这个:
 def has_extension(filename, extension): ext = "." + extension if filename.endswith(ext): return True else: return False