如果我有一个字符串列表:
matches = [ 'string1', 'anotherstring', 'astringystring' ]
Run Code Online (Sandbox Code Playgroud)
我还有另一个要测试的字符串:
teststring = 'thestring1'
Run Code Online (Sandbox Code Playgroud)
我想测试每个字符串,如果有匹配,就做一些事情。我有:
match = 0
for matchstring in matches:
if matchstring in teststring:
match = 1
if !match:
continue
Run Code Online (Sandbox Code Playgroud)
这是一个循环,所以如果我们没有得到匹配,我们就再次循环(当然我可以反转这个逻辑,如果匹配则做一些事情),但是代码看起来很笨拙,而不是Pythonic,如果很容易理解的话。
我认为有更好的方法可以做到这一点,但我对 python 的理解并不如我所愿。有更好的方法吗?
请注意,“重复”是相反的问题(尽管相同的答案方法是相同的)。
你可以any在这里使用
代码:
if any(matchstring in teststring for matchstring in matches):
print "Matched"
Run Code Online (Sandbox Code Playgroud)
笔记:
any一旦发现匹配就退出。for matchstring in matches这里发生的事情是迭代来自的每个字符串matches。matchstring in teststring我们检查迭代的字符串是否在定义的检查字符串中。any一旦 True在表达式中看到[匹配],就会退出。