1. Nối hai Set trong Python

Có một số cách để nối hai hoặc nhiều Set  trong Python. Bạn có thể sử dụng phương thức union() để trả về một Set mới chứa tất cả các phần tử cả hai Set

Ngoài ra cũng có thể sử dụng phương thức update() để nối tất cả các phần tử của Set này vào trong một Set khác.

# Khai bao setA va setB
setA = {"oto", "xe may", "may bay", "tau dien", "xe dap"}
setB = {"tau ngam", "xe hoi", "tau hoa", "truc thang"}

# Hien thi setA ban dau
print("SetA ban dau")
print(setA)

# Hien thi setB
print("SetB ban dau")
print(setB)

# Noi hai setA va setB bang phuong thuc union()
setC = setA.union(setB)

# Hien thi setC la tap hop cua setA va setB
print("Set sau khi noi la")
print(setC)

Kết quả:

SetA ban dau
{‘may bay’, ‘xe dap’, ‘oto’, ‘xe may’, ‘tau dien’}
SetB ban dau
{‘tau hoa’, ‘tau ngam’, ‘xe hoi’, ‘truc thang’}
Set sau khi noi la
{‘may bay’, ‘truc thang’, ‘xe dap’, ‘oto’, ‘xe hoi’, ‘xe may’, ‘tau dien’, ‘tau ngam’, ‘tau hoa’}

Sử dụng tương tự với phương thức update() để hợp nhất (hay nối) tất cả các phần tử của setB vào trong setA như sau:

# Khai bao setA va setB
setA = {"oto", "xe may", "may bay", "tau dien", "xe dap"}
setB = {"tau ngam", "xe hoi", "tau hoa", "truc thang"}

# Hien thi setA ban dau
print("SetA ban dau")
print(setA)

# Hien thi setB
print("SetB ban dau")
print(setB)

# Su dung phuong thuc update() de noi setB vao setA
setA.update(setB)

# Hien thi ket qua setA sau khi noi setB
print("SetA sau khi noi them SetB ")
print(setA)

Kết quả:

SetA ban dau
{‘xe dap’, ‘tau dien’, ‘xe may’, ‘may bay’, ‘oto’}
SetB ban dau
{‘truc thang’, ‘tau hoa’, ‘tau ngam’, ‘xe hoi’}
SetA sau khi noi them SetB
{‘xe dap’, ‘tau dien’, ‘tau ngam’, ‘xe may’, ‘may bay’, ‘tau hoa’, ‘oto’, ‘truc thang’, ‘xe hoi’}

2. Lấy các phần tử chung của hai Set trong Python

Ở phần trên, khi sử dụng phương thức update()union() ta nhận được một Set mới chính là một bộ được hợp nhất và các giá trị có cả trong Set ASetB.

Trong phần này, chúng ta sẽ cùng nhau sử dụng phương thức intersection_update() để nối hai SetA SetB tuy nhiên chỉ giữ lại các phần tử có chung trong cả hai Set A Set B.

# Khai bao setA va setB
setA = {"oto", "xe may", "may bay", "tau dien", "xe dap"}
setB = {"xe dap", "tau ngam", "xe hoi", "tau hoa", "truc thang"}

# Hien thi setA ban dau
print("SetA ban dau")
print(setA)

# Hien thi setB
print("SetB ban dau")
print(setB)

# Su dung phuong thuc intersection_update() de lay ra cac phan tu chung cua 2 set
setA.intersection_update(setB)

# Hien thi ket qua setA sau khi noi setB va lay ra cac phan tu chung cua 2 set
print("Phan tu chung cua hai set ")
print(setA)

Kết quả:

SetA ban dau
{‘oto’, ‘xe dap’, ‘tau dien’, ‘xe may’, ‘may bay’}
SetB ban dau
{‘tau ngam’, ‘xe dap’, ‘truc thang’, ‘xe hoi’, ‘tau hoa’}
Phan tu chung cua hai set
{‘xe dap’}

Ở ví dụ trên, phần tử “xe dap” là phần tử chung của hai set Aset B. Vì vậy kết quả được trả về sẽ là {'xe dap'}

3. Loại bỏ các phần tử chung của hai Set trong Python

Ngược lại với việc nối hai Set và chọn ra những phần tử có chung trong cả hai Set ASetB thì ta cũng có thể nối hai Set và chỉ lấy những phần từ khác biệt có trong cả hai Set.

Để làm được việc này, ta cần sử dụng phương thức symmetric_difference() có sẵn trong Python để trả về một tập hợp Set mới, chỉ chứa các phần từ KHÔNG là phần tử chung của cả hai Set.

# Khai bao setA va setB
setA = {"oto", "xe may", "may bay", "tau dien", "xe dap"}
setB = {"xe dap", "tau ngam", "xe hoi", "tau hoa", "truc thang"}

# Hien thi setA ban dau
print("SetA ban dau")
print(setA)

# Hien thi setB
print("SetB ban dau")
print(setB)

# Su dung phuong thuc symmetric_difference() de lay ra cac phan tu KHONG chung trong 2 set
setA.symmetric_difference_update(setB)

# Hien thi ket qua setA sau khi noi setB va lay ra cac phan tu KHONG chung cua 2 set
print("Phan tu KHONG chung cua hai set ")
print(setA)

Kết quả:

SetA ban dau
{‘oto’, ‘may bay’, ‘xe may’, ‘tau dien’, ‘xe dap’}
SetB ban dau
{‘tau hoa’, ‘tau ngam’, ‘xe hoi’, ‘truc thang’, ‘xe dap’}
Phan tu KHONG chung cua hai set
{‘tau hoa’, ‘oto’, ‘tau ngam’, ‘may bay’, ‘xe hoi’, ‘truc thang’, ‘xe may’, ‘tau dien’}

Ở ví dụ trên, phần tử “xe dap” là phần tử chung của hai set Aset B. Vì vậy phần tử này sẽ bị loại ra khỏi kết quả khi thực hiện join giữa hai Set.