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

โปรแกรม Python แปลงลิสต์เป็นเซ็ตกลุ่มตามสมาชิกทั่วไป (Convert List to Sets by Common Element)


ตัวอย่าง

โค้ดด้านล่างรวม 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, ...)

  • เรียกฟังก์ชัน แสดงผลลัพธ์: เซ็ตที่รวมกลุ่มตามสมาชิกทั่วไป