在Python中简化表达式

3 python string iteration expression

我觉得必须有一个更简单/更清洁/更快(选择一种或多种)的方式来编写这个表达式......

采取BigString ="这是一个关于一只名叫花花公子的红猫的长句."

和LittleStringList = ["红狗","红猫","红色鼠标"]

我实际上想要一个函数/表达式,当LittleStringList中的一个在BigString中时返回true.我这样写的:

def listcontains(list, big):
    contains = False
    for string in list:
        if string in big:
            contains = True
        else:
            pass
    return contains
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏!谢谢.

编辑:修正了一个小错误!

mhy*_*itz 11

any([s in BigString for s in LittleStringList])

甚至更好地使用生成器表达式 - 正如@GWW指出的那样:

any(s in BigString for s in LittleStringList)

  • 您可以使用生成器表达式而不是列表推导 (5认同)
  • 注意第一种和第二种方式的性能可能有很大差异,特别是当LittleStringList变大时.当使用生成器调用`any`时,它只会迭代直到表达式返回True,然后立即返回. (3认同)