Я хотел бы узнать, содержится ли в списке список подстрок. Например, у меня есть:

    string_list = ['item1', 'item2', 'subject3', 'subject4']

И список подстрок

    substrings = ['item', 'subject']

Я хотел бы узнать, включены ли 'item' или 'subject' в какой-либо элемент списка string_list. По отдельности я бы сделал что-то вроде:

    any('item' in x for x in string_list)

Это работает для одной подстроки, но я хотел бы найти симпатичный способ поиска обеих строк в списке подстрок.

5
Jonathan C Lee 28 Авг 2017 в 23:16

3 ответа

Лучший ответ
any(y in x for x in string_list for y in substrings)
3
Roman Pekar 28 Авг 2017 в 20:26

Вы можете попробовать это:

string_list = ['item1', 'item2', 'subject3', 'subject4']

substrings = ['item', 'subject']

any(any(b in i for b in substrings) for i in string_list)

Выход:

True
1
Ajax1234 28 Авг 2017 в 20:22

Так как подстроки на самом деле находятся в начале, вы можете использовать {{X0} } который может принимать набор префиксов:

any(x.startswith(('item', 'subject')) for x in string_list)
1
Moses Koledoye 28 Авг 2017 в 20:18