python,”;“b”中的a;关键字,多个a';s
我在Python中的冒险仍在继续,我最喜欢的书也不再出现了。Python提供了一种内置方法,使用“in”关键字测试变量是否位于iterable对象中:python,”;“b”中的a;关键字,多个a';s,python,Python,我在Python中的冒险仍在继续,我最喜欢的书也不再出现了。Python提供了一种内置方法,使用“in”关键字测试变量是否位于iterable对象中: if "a" in "abrakadabra" : print "it is definitely here" 但是,是否可以测试列表中是否有多个项目(任何一项)? 目前,我使用的语法如下,但有点长: if "// @in " in sTxt or "// @out " in sTxt or "// @ret " in sTxt or &l
if "a" in "abrakadabra" :
print "it is definitely here"
但是,是否可以测试列表中是否有多个项目(任何一项)?
目前,我使用的语法如下,但有点长:
if "// @in " in sTxt or "// @out " in sTxt or "// @ret " in sTxt or <10 more>
print "found."
如果sTxt中的“/@in”或sTxt中的“/@out”或sTxt中的“/@ret”,或
打印“找到”
当然正则表达式会有帮助,但是使用正则表达式会花费大量的代码,而且
没有“b中的a”那么清楚。还有其他的python方式吗?任何(文本中的snippet\u body表示“hi”、“foo”、“bar”、“spam”)中的snippet)
并获取一个iterable,并检查其中是否有/所有值的计算结果为真值。将其与生成器表达式相结合,您可以检查多个项。语法中没有内置的方法来执行此操作。但是,您可以使用“any”功能使其更简单,如@MizardX和@Benjamin Peterson所示。如果您需要任何检查,则可以使用以下方法:
inthere = False
checks = ('a', 'b')
for check in checks:
if check in 'abrakadabra':
inthere = True
break
inthere = True
checks = ('a', 'b')
for check in checks:
if check not in 'abrakadabra':
inthere = False
break
如果您想全部退房,可以使用以下选项:
inthere = False
checks = ('a', 'b')
for check in checks:
if check in 'abrakadabra':
inthere = True
break
inthere = True
checks = ('a', 'b')
for check in checks:
if check not in 'abrakadabra':
inthere = False
break
编辑:不知道更像Python的any()
。在python上使用它可能更好
EDIT2:添加了中断语句,并更正了所有情况。您还可以使用:
非备选方案。isdisjoint(sTxt)#表示“任何”
(备选方案和sTxt)!=set()#同样,交叉点是非空的
备选方案如果要为同一个单词测试很多行,那么将它们编译为正则表达式可能会更快。例如:
import re
words = ["// @in ", "// @out ", "// @ret "] + ["// @test%s " % i for i in range(10)]
my_regex = re.compile("|".join(map(re.escape, words)))
for line in lines_to_search:
if my_regex.search(line): print "Found match"
一些快速计时显示,这通常比any(单词串中的单词表示单词中的单词)
方法快。我用不同的文本测试了这两种方法(短/长,带/不带匹配项)。结果如下:
{ No keywords } | {contain Keywords }
short long short long
regex : 0.214 27.214 0.147 0.149
any in : 0.579 81.341 0.295 0.300
如果性能无关紧要,那么any()
方法更具可读性。这一定是一篇老文章,现在最简单的方法是列出:
a = "some long text which may or may not include bononos or cabbages"
alternatives = ["apple", "banana", "riverdale"]
if a in alternatives:
print("Hm?")
我添加了文档的链接,这样S.Lott就不会对你投反对票;)不过,非常严肃地说,我们鼓励您链接到文档,希望您不介意。\o/很高兴有一个带有“可能比……更快”声明的基准测试!我的回答提到这些对象必须是集合。