1

有没有更优雅的方式来写这个语句?我发现自己写了很多类似的东西。

if ('.jpg' in imagename[0].lower() or '.png' in imagename[0].lower() or '.jpeg' 
    in imagename[0].lower()):
4

3 回答 3

15

你可能想要

if imagename[0].lower().endswith((".jpg", ".jpeg", ".png")):
    # whatever

请注意,它str.endswith()接受一个字符串元组。另请注意,此代码与您的代码不等价,因为它仅检查文件名末尾提到的字符串,但很可能这是您的意图。

于 2012-08-09T13:44:03.257 回答
1

你也可以这样做:

if any(ext in imagename[0].lower() for ext in ['.jpg', '.png', '.jpeg']):

any(boolean_list)True如果boolean_list包含True元素则返回。

于 2012-08-09T13:51:52.927 回答
0

另一种方法(为了好玩):

if imagename[0].lower().split('.')[-1] in ('jpg','png','jpeg'):
    # do something
于 2012-08-09T14:31:40.073 回答