1. Trang chủ
  2. Blog
  3. Python Set: Cách Dùng Set Trong Python Cho Người Mới
Python

Python Set: Cách Dùng Set Trong Python Cho Người Mới

U

Uyên Hoàng Thị Tố

Đăng ngày 09/11/2026

Python set là kiểu dữ liệu lưu tập hợp các phần tử không trùng lặp và không có thứ tự, viết trong ngoặc nhọn. Set trong Python giúp bạn loại giá trị trùng và kiểm tra phần tử có tồn tại hay chưa rất nhanh. Bài viết hướng dẫn cách tạo, thêm, xóa và dùng các phép toán trên set, kèm ví dụ dễ hiểu.

Python set là gì và có đặc điểm nào?

Khi cần lọc danh sách email trùng hay tìm học viên có mặt ở cả hai lớp, bạn không muốn viết vòng lặp dài. Python set xử lý việc này chỉ với một dòng lệnh.

mau = {"đỏ", "xanh", "vàng", "đỏ"}
print(mau)        # {'đỏ', 'xanh', 'vàng'} (thứ tự có thể khác)
print(len(mau))   # 3

Giá trị "đỏ" xuất hiện hai lần nhưng set chỉ giữ một lần.

Set trong Python có những đặc điểm gì?

Bạn cần nhớ bốn đặc điểm sau của set trong Python:

  • Không trùng lặp: mỗi giá trị chỉ xuất hiện một lần.

  • Không có thứ tự: bạn không truy cập phần tử bằng chỉ mục như s[0].

  • Thêm và xóa được: bạn thay đổi nội dung set sau khi tạo.

  • Phần tử phải bất biến: set chứa được số, chuỗi, tuple nhưng không chứa được list hay dict.

Nếu bạn cần giữ thứ tự và cho phép trùng, hãy dùng list. Bạn xem thêm ở bài Python list.

Cách tạo python set

Có hai cách phổ biến để tạo set. Cách đầu dùng ngoặc nhọn, cách thứ hai dùng hàm set().

Tạo set bằng ngoặc nhọn

Bạn đặt các phần tử trong {}, cách nhau bằng dấu phẩy.

so = {1, 2, 3, 4}
print(so)
print(type(so))   # <class 'set'>

Tạo set bằng hàm set()

Hàm set() chuyển list, tuple hoặc chuỗi thành set. Cách này rất hợp để loại phần tử trùng.

ds = [1, 2, 2, 3, 3, 3]
duy_nhat = set(ds)
print(duy_nhat)            # {1, 2, 3}
print(set("python"))       # các ký tự không trùng của chuỗi

Lưu ý khi tạo set rỗng

Cặp {} trống tạo ra dict, không phải set. Muốn có set rỗng, bạn bắt buộc dùng set().

a = {}
b = set()
print(type(a))   # <class 'dict'>
print(type(b))   # <class 'set'>

Đây là lỗi người mới gặp nhiều nhất khi bắt đầu dùng python set.Cách tạo python set bằng ngoặc nhọn và hàm set() - codegym.vn

Thêm, xóa phần tử trong python set

Set sửa được, nên bạn thêm và xóa phần tử bất cứ lúc nào. Vì set không có chỉ mục, bạn thao tác trực tiếp bằng giá trị.

Thêm phần tử bằng add và update

  • add(x): thêm một phần tử.

  • update(ds): thêm nhiều phần tử từ list, tuple hoặc set khác.

s = {1, 2}
s.add(3)
s.update([4, 5, 5])
print(s)   # {1, 2, 3, 4, 5}

Thêm giá trị đã có thì set không đổi và không báo lỗi.

Xóa phần tử bằng remove, discard và pop

Python có ba cách xóa phần tử chính:

  • remove(x): xóa x, báo KeyError nếu x không có.

  • discard(x): xóa x, không báo lỗi nếu x không có.

  • pop(): xóa và trả về một phần tử bất kỳ.

s = {10, 20, 30}
s.remove(10)
s.discard(99)      # không lỗi
x = s.pop()
print(x, s)
s.clear()          # xóa toàn bộ
print(s)           # set()

Muốn an toàn, bạn nên ưu tiên discard() khi chưa chắc phần tử có trong set.Thêm, xóa phần tử trong python set bằng add, remove, discard - codegym.vn

Kiểm tra phần tử trong set

Toán tử in kiểm tra một giá trị có nằm trong set hay không. Với set, thao tác này nhanh hơn nhiều so với tìm trong list dài.

nhom = {"An", "Lan", "Minh"}
print("An" in nhom)       # True
print("Hoa" not in nhom)  # True

Bạn kết hợp với if để rẽ nhánh, xem cú pháp ở bài Python if else.

Các phép toán tập hợp với python set

Điểm mạnh nhất của python set là các phép toán tập hợp giống trong môn Toán.

Phép toánToán tửMethodÝ nghĩa
Hợpa | ba.union(b)Phần tử có ở a hoặc b
Giaoa & ba.intersection(b)Phần tử có ở cả a và b
Hiệua - ba.difference(b)Phần tử có ở a nhưng không có ở b
Hiệu đối xứnga ^ ba.symmetric_difference(b)Phần tử chỉ có ở một trong hai set
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a | b)   # {1, 2, 3, 4, 5, 6}
print(a & b)   # {3, 4}
print(a - b)   # {1, 2}
print(a ^ b)   # {1, 2, 5, 6}

So sánh tập con và tập cha

Bạn dùng issubset() và issuperset() để kiểm tra quan hệ giữa hai set.

nho = {1, 2}
lon = {1, 2, 3}
print(nho.issubset(lon))     # True
print(lon.issuperset(nho))   # True
print(nho.isdisjoint({7}))   # True

Hàm isdisjoint() trả về True khi hai set không có phần tử chung.

Duyệt python set bằng vòng lặp for

Vòng lặp for đi qua từng phần tử của set. Thứ tự duyệt không cố định, nên đừng dựa vào thứ tự đó. Bạn xem kỹ cú pháp ở bài Python for.

for ten in {"An", "Lan", "Minh"}:
    print("Xin chào", ten)

for x in sorted({3, 1, 2}):
    print(x)   # 1, 2, 3

Muốn duyệt theo thứ tự, bạn dùng sorted(). Hàm này trả về một list mới đã sắp xếp.

Các hàm thường dùng với python set

Hàm / methodTác dụngVí dụ
len(s)Đếm số phần tửlen({1, 2, 3}) cho 3
max(s), min(s)Giá trị lớn nhất, nhỏ nhấtmax({4, 9, 2}) cho 9
sum(s)Tính tổng các sốsum({1, 2, 3}) cho 6
s.copy()Tạo bản saob = a.copy()
s.clear()Xóa toàn bộ phần tửs thành set()
frozenset(s)Tạo set không sửa đượcfrozenset([1, 2])

frozenset là phiên bản bất biến của set. Bạn dùng nó khi cần đặt set làm phần tử của một set khác.

Lỗi thường gặp khi dùng python set

  • Tạo set rỗng bằng {}: kết quả là dict. Hãy dùng set().

  • Truy cập s[0]: báo TypeError vì set không có chỉ mục.

  • Đưa list vào set: báo TypeError: unhashable type: 'list'. Hãy đổi list thành tuple.

  • Dùng remove() với giá trị không có: báo KeyError. Hãy dùng discard().

Bài tập tự luyện với python set

Hãy tự viết code trước, rồi mới so với gợi ý.

  1. Cho list [5, 3, 5, 1, 3, 9], loại bỏ phần tử trùng và in kết quả.

  2. Cho hai nhóm học viên, tìm những người học cả hai nhóm.

  3. Đếm số ký tự khác nhau trong chuỗi "hocpython".

Gợi ý cho bài 2 và bài 3:

nhom_a = {"An", "Lan", "Minh"}
nhom_b = {"Lan", "Hoa", "Minh"}
print(nhom_a & nhom_b)        # {'Lan', 'Minh'}
print(len(set("hocpython")))  # 8

Muốn luyện thêm, bạn xem bài Bài tập Python cơ bản có lời giải.

Câu hỏi thường gặp về python set

Python set khác list như thế nào?

List có thứ tự, cho phép trùng và truy cập bằng chỉ mục. Set không có thứ tự, không trùng và kiểm tra phần tử nhanh hơn.

Set có sắp xếp được không?

Bản thân set không có thứ tự. Bạn dùng sorted(s) để nhận một list đã sắp xếp.

Khi nào nên dùng set thay vì list?

Bạn dùng set khi cần loại giá trị trùng, kiểm tra thành viên nhanh hoặc làm phép toán hợp, giao, hiệu.

Bắt đầu thực hành với python set

Bạn đã nắm cách tạo, thêm, xóa, kiểm tra và dùng phép toán trên python set. Hãy gõ lại từng ví dụ, đổi giá trị rồi quan sát kết quả.

Đăng ký học thử miễn phí để chạy code ngay trong bài học, hoặc bắt đầu với khóa Nhập môn Lập trình Python. Bạn cũng có thể luyện cú pháp với khóa Luyện tập Cú pháp Python hoặc gọi +84 989 534 458 để chúng tôi tư vấn lộ trình. Dùng đều mỗi ngày, bạn sẽ quen tay với python set.

Chia sẻ:
Đã sao chép!

Bài viết liên quan

HỌC PYTHON - CÔNG TY CP CODEGYM VIỆT NAM

MST: 0108104526
Địa chỉ: Căn hộ TT01.23, dự án Hải Đăng city, phường Từ Liêm, thành phố Hà Nội
Điện thoại: +84 989 534 458
Website: codegym.vn