Ini pertanyaan yang cukup lama, tetapi saya menawarkan jawaban ini karena jawaban sebelumnya tidak mengatasi item dalam daftar yang bukan string (atau semacam objek yang dapat diubah). Barang-barang seperti itu akan menyebabkan seluruh pemahaman daftar gagal dengan pengecualian.
Untuk menangani item-item semacam itu dalam daftar dengan melewatkan item-item yang tidak dapat diubah, gunakan yang berikut ini:
[el for el in lst if isinstance(el, collections.Iterable) and (st in el)]
kemudian, dengan daftar seperti itu:
lst = [None, 'abc-123', 'def-456', 'ghi-789', 'abc-456', 123]
st = 'abc'
Anda masih akan mendapatkan item yang cocok ( ['abc-123', 'abc-456']
)
Tes untuk iterable mungkin bukan yang terbaik. Mendapatnya dari sini: Dengan Python, bagaimana cara menentukan apakah suatu objek dapat diubah?