有一个包含字符串元组的列表,我需要检查给定的字符串是否在任何元组中,我可以用我的代码来做到这一点,但我正在寻找一种实现此目的的Python方法而且“输入”在这里不像namelst中的“ GivenName”一样工作。
元组:
namelst= [('Travolta', 'Surname'), ('John', 'GivenName'), ('Joe', 'Nickname')]
传统代码:
for items in namelst:
if('GivenName' in items):
//Do Something
如果您想知道是否有匹配项,只需使用any
就足够了-
if any('GivenName' in x for x in namelst):
... # do something
any
对作为理解结果生成的每个布尔结果执行短路。找到第一个 True
结果后,迭代停止,结果为True
。否则,迭代完成,如果未True
遇到结果,则结果为False
。
与此操作all
相反,该操作的工作方式相反,返回False
找到的第一个值,True
否则返回。
如果您需要找到匹配的第一个索引,则可以使用next
,它恰好非常有效,并且在不需要时不会遍历整个索引namelst
-
j = next((i for i, x in enumerate(namelst) if 'GivenName' in x), -1)
if j > -1:
... # do something
值得一提的是,如果要查找匹配的每个索引,则for
循环不仅是最pythonic的,也是最简单的解决方案。
for i, x in enumerate(namelst):
if 'GivenName' in x:
... # do something
最后两种解决方案的假设是,您需要索引来执行某项操作(因此,使用enumerate
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句