แนวคิด
จาก matrix (ลิสต์ของลิสต์) ให้คืนเฉพาะแถวที่มีสมาชิกเป็นชนิดข้อมูล "container" ได้แก่ list, tuple, dict, set ใช้ isinstance() ตรวจสอบ
ตัวอย่างโค้ด
my_list = [
[13, 1, 35],
[23, [44, 54], 85],
[66],
[75, (81, 2), 29, 7]
]
print("Matrix:", my_list)
# ใช้ isinstance ตรวจสอบหลายชนิด
my_result = [
row for row in my_list
if any(isinstance(elem, (list, tuple, dict, set)) for elem in row)
]
print("แถวที่มี complex type:", my_result)
ผลลัพธ์
Matrix: [[13, 1, 35], [23, [44, 54], 85], [66], [75, (81, 2), 29, 7]]
แถวที่มี complex type: [[23, [44, 54], 85], [75, (81, 2), 29, 7]]
คำอธิบาย
isinstance(elem, (list, tuple, dict, set))ตรวจสอบว่า elem เป็นชนิดใดชนิดหนึ่งใน tupleany(...)True ถ้ามีอย่างน้อย 1 สมาชิกในแถวเป็น complex type- แถวที่ 1 มี [44, 54] (list), แถวที่ 3 มี (81, 2) (tuple)
การขยาย: ตรวจสอบ nested ทุกระดับ
def has_complex_type(obj):
if isinstance(obj, (list, tuple, dict, set)):
return True
if isinstance(obj, (list, tuple, set)):
return any(has_complex_type(item) for item in obj)
if isinstance(obj, dict):
return any(has_complex_type(v) for v in obj.values())
return False
my_result = [row for row in my_list if any(has_complex_type(elem) for elem in row)]