Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python chuyển danh sách thành tập hợp dựa trên phần tử chung

Gộp các tập hợp (set) có giao nhau không rỗng thành một tập hợp lớn hơn, lặp lại cho đến khi không còn giao nhau.

Ví dụ

Minh họa:

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("Danh sách:")
print(my_list)
my_set = list(map(set, my_list))
my_result = common_elem_set(my_set)
print("Kết quả:")
print(my_result)

Kết quả

Danh sách: [[18, 14, 12, 19], [9, 6, 2, 1], [54, 32, 21, 17], [18, 11, 13, 12]]
Kết quả: [{11, 12, 13, 14, 18, 19}, {9, 2, 6, 1}, {32, 17, 21, 54}]

Giải thích

  • Chuyển từng sublist thành set.
  • Đệ quy: nếu hai set giao nhau (val & k), union chúng, xóa set thứ hai, gọi lại hàm.
  • Dừng khi không còn cặp nào giao nhau.