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

กรองแถวที่มีสมาชิกครบทุกตัวใน sublist ที่กำหนด

แนวคิด

กำหนดลิสต์ของลิสต์ (matrix) และ sublist เป้าหมาย ให้คืนเฉพาะแถวที่มีสมาชิกครบทุกตัวใน sublist เป้าหมาย (subset check)

ตัวอย่างโค้ด

my_list = [[8, 6, 3, 2], [1, 6], [2, 1, 7], [8, 1, 2]]
print("Matrix:", my_list)

sub_list = [1, 2]
print("Sublist เป้าหมาย:", sub_list)

result = []
for row in my_list:
    flag = True
    for element in sub_list:
        if element not in row:
            flag = False
            break
    if flag:
        result.append(row)

print("แถวที่มี 1 และ 2 ครบทั้งคู่:", result)

ผลลัพธ์

Matrix: [[8, 6, 3, 2], [1, 6], [2, 1, 7], [8, 1, 2]]
Sublist เป้าหมาย: [1, 2]
แถวที่มี 1 และ 2 ครบทั้งคู่: [[2, 1, 7], [8, 1, 2]]

วิธี Pythonic ด้วย all() และ set

# ใช้ all() กับ generator expression
result = [row for row in my_list if all(elem in row for elem in sub_list)]

# ใช้ set (เร็วกว่าสำหรับลิสต์ใหญ่)
target_set = set(sub_list)
result = [row for row in my_list if target_set.issubset(row)]

การประยุกต์

  • ค้นหา record ที่มี tags ครบทุกตัวที่กำหนด
  • กรอง transaction ที่มี items ครบชุด
  • ตรวจสอบ prerequisites ใน course dependencies