Подтвердить что ты не робот

Самый простой способ проверки строки, содержащей строку в списке?

Я нахожу себя многократно, пишу один и тот же кусок кода:

def stringInList(str, list):
    retVal = False
    for item in list:
        if str in item:
            retVal = True
    return retVal

Есть ли способ записать эту функцию быстрее/с меньшим количеством кода? Обычно я использую это в выражении if, например:

if stringInList(str, list):
    print 'string was found!'
4b9b3361

Ответ 1

Да, используйте any():

if any(s in item for item in L):
    print 'string was found!'

Как упоминается в документах, это в значительной степени эквивалентно вашей функции, но any() может принимать выражения генератора вместо строки и списка и any() коротких замыканий. Как только s in item имеет значение True, функция прерывается (вы можете просто сделать это с помощью вашей функции, если вы просто измените retVal = True на return True). Помните, что функции ломаются, когда они возвращают значение).


Вам следует избегать именования строк str и перечислять list. Это приведет к переопределению встроенных типов.