一个班轮:查找字符串是否在字符串列表中

时间:2015-03-26 14:57:37

标签: python string list

我正在寻找一个布尔一行,以查看特定子字符串是否在字符串列表中。所以我可以在像

这样的东西中使用它
if( (condition1) and (condition2) and (python_one_liner) ):
  # Do some things here

这有望取代以下内容:

if( (condition1) and (condition2) ):
  Condtion3 = False
  for str in list_of_strings:
    if( mystr in str ):
    Condition3 = True

  if( Condition3 ):
    # Do some things here

一种显而易见的方法是简单地编写一个函数并在初始if语句中评估该函数。我想知道是否有更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:5)

any() function与生成器表达式一起使用:

if condition1 and condition2 and any(mystr in s for s in list_of_strings):

这比您的版本更有效,因为只有s的{​​{1}}值才会被测试,直到找到第一个list_of_strings值。

如果您还需要知道匹配的字符串,您可以获得第一个这样的字符串:

True

其中next() function将生成器表达式迭代到第一个匹配并返回,或者如果没有匹配的字符串则返回match = next((s for s in list_of_strings if mystr in s), None) if condition1 and condition2 and match: