我有这样的东西:
extensionsToCheck = ['.pdf', '.doc', '.xls']
for extension in extensionsToCheck:
if extension in url_string:
print(url_string)
我想知道在Python中更优雅的方法是什么(不使用for循环)?我在想类似这样的东西(比如从C/ c++中),但它不起作用:
if ('.pdf' or '.doc' or '.xls') in url_string:
print(url_string)
编辑:我有点被迫解释这与下面被标记为潜在重复的问题有什么不同(所以我猜它不会关闭)。
区别在于,我想检查字符串是否是某个字符串列表的一部分,而另一个问题是检查字符串列表中的字符串是否是另一个字符串的子字符串。相似,但不完全相同,当你在网上寻找答案时,语义很重要。这两个问题实际上是要解决彼此相反的问题。但两者的解决方案是一样的。
这是我能想到的最简单的方法。
list_ = ('.doc', '.txt', '.pdf')
string = 'file.txt'
func = lambda list_, string: any(filter(lambda x: x in string, list_))
func(list_, string)
# Output: True
同样,如果有人需要保存字符串中的元素,他们可以使用这样的方法:
list_ = ('.doc', '.txt', '.pdf')
string = 'file.txt'
func = lambda list_, string: tuple(filter(lambda x: x in string, list_))
func(list_, string)
# Output: '.txt'
这是我能想到的最简单的方法。
list_ = ('.doc', '.txt', '.pdf')
string = 'file.txt'
func = lambda list_, string: any(filter(lambda x: x in string, list_))
func(list_, string)
# Output: True
同样,如果有人需要保存字符串中的元素,他们可以使用这样的方法:
list_ = ('.doc', '.txt', '.pdf')
string = 'file.txt'
func = lambda list_, string: tuple(filter(lambda x: x in string, list_))
func(list_, string)
# Output: '.txt'