Это довольно старый вопрос, но я предлагаю этот ответ, потому что предыдущие ответы не справляются с элементами в списке, которые не являются строками (или неким итеративным объектом).Такие элементы могут привести к сбою в понимании всего списка с исключением.
Чтобы изящно обрабатывать такие элементы в списке, пропуская не повторяемые элементы, используйте следующее:
[el for el in lst if isinstance(el, collections.Iterable) and (st in el)]
тогда с таким списком:
lst = [None, 'abc-123', 'def-456', 'ghi-789', 'abc-456', 123]
st = 'abc'
вы все равно получите соответствующие элементы (['abc-123', 'abc-456']
)
. Тест на итерируемость может быть не лучшим.Получил это здесь: В Python, как определить, является ли объект итеративным?