แนวคิด
กำหนดลิสต์ของลิสต์ (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