Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ดึงแถวที่มีข้อมูลชนิด Complex (list, tuple, dict, set) ใน Matrix

แนวคิด

จาก 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 เป็นชนิดใดชนิดหนึ่งใน tuple
  • any(...) 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)]