Це досить давнє запитання, але я пропоную цю відповідь, тому що попередні відповіді не справляються з елементами у списку, які не є рядками (або якимось ітерабельним об’єктом). Такі пункти можуть спричинити збій всього розуміння списку за винятком.
Щоб витончено розібратися з такими елементами у списку, пропустивши елементи, які не можна повторити, скористайтеся наступним:
[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, як я можу визначити, чи є об'єкт ітерабельним?