编写以下代码的pythonic方式是什么?
extensions = ['.mp3','.avi']
file_name = 'test.mp3'
for extension in extensions:
if file_name.endswith(extension):
#do stuff
我有一个模糊的记忆,for
循环的显式声明可以避免,可以在if
条件中编写。这是真的吗?
发布于 2013-08-21 16:03:46
虽然不是很广为人知,但str.endswith也接受元组。你不需要循环。
>>> 'test.mp3'.endswith(('.mp3', '.avi'))
True
发布于 2013-08-21 16:03:37
只需使用:
if file_name.endswith(tuple(extensions)):
发布于 2013-08-21 16:04:25
从文件中提取一个扩展名,看看它是否在扩展名集中:
>>> import os
>>> extensions = set(['.mp3','.avi'])
>>> file_name = 'test.mp3'
>>> extension = os.path.splitext(file_name)[1]
>>> extension in extensions
True
使用集合,因为在集合中查找的时间复杂度是O(1) (docs)。
https://stackoverflow.com/questions/18351951
复制相似问题