ตัวอย่าง
โค้ดด้านล่างรวม sublist ที่มีสมาชิกซ้อนทับกันเป็นเซ็ตเดียวกัน โดยใช้ union และ recursion
def common_elem_set(my_set):
for index, val in enumerate(my_set):
for j, k in enumerate(my_set[index + 1:], index + 1):
if val & k:
my_set[index] = val.union(my_set.pop(j))
return common_elem_set(my_set)
return my_set
my_list = [[18, 14, 12, 19], [9, 6, 2, 1], [54, 32, 21, 17], [18, 11, 13, 12]]
print("The list is :")
print(my_list)
my_set = list(map(set, my_list))
my_result = common_elem_set(my_set)
print("The result is :")
print(my_result)
ผลลัพธ์
The list is : [[18, 14, 12, 19], [9, 6, 2, 1], [54, 32, 21, 17], [18, 11, 13, 12]]
The result is : [{11, 12, 13, 14, 18, 19}, {9, 2, 6, 1}, {32, 17, 21, 54}]
คำอธิบาย
กำหนดฟังก์ชัน common_elem_set: วนลูปคู่ของเซ็ต ถ้ามีการตัดกัน (val & k) ให้ union แล้วลบอันหลังออก และเรียกฟังก์ชันซ้ำ
กำหนดลิสต์ซ้อน แปลงเป็นลิสต์ของเซ็ตด้วย map(set, ...)
เรียกฟังก์ชัน แสดงผลลัพธ์: เซ็ตที่รวมกลุ่มตามสมาชิกทั่วไป