นี่เป็นคำถามที่ค่อนข้างเก่า แต่ฉันเสนอคำตอบนี้เพราะคำตอบก่อนหน้านี้ไม่ได้รับมือกับรายการในรายการที่ไม่ใช่สตริง (หรือวัตถุที่ซ้ำได้บางชนิด) รายการดังกล่าวจะทำให้ความเข้าใจในรายการทั้งหมดล้มเหลวโดยมีข้อยกเว้น
หากต้องการจัดการกับรายการดังกล่าวในรายการโดยข้ามรายการที่ไม่สามารถทำซ้ำได้ให้ใช้รายการต่อไปนี้:
[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 ฉันจะทราบได้อย่างไรว่าวัตถุนั้นสามารถทำซ้ำได้?