Python For Data Analysis: Phân Tích Dữ Liệu Cho Người Mới
Python for data analysis là cách dùng Python để làm sạch, thống kê và vẽ biểu đồ dữ liệu bằng Pandas...
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.
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.
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ó 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().
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'>
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
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.
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ị.
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.
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.
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.
Đ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án | Toán tử | Method | Ý nghĩa |
|---|---|---|---|
| Hợp | a | b | a.union(b) | Phần tử có ở a hoặc b |
| Giao | a & b | a.intersection(b) | Phần tử có ở cả a và b |
| Hiệu | a - b | a.difference(b) | Phần tử có ở a nhưng không có ở b |
| Hiệu đối xứng | a ^ b | a.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}
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.
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.
| Hàm / method | Tác dụng | Ví 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ất | max({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 sao | b = 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 được | frozenset([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.
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().
Hãy tự viết code trước, rồi mới so với gợi ý.
Cho list [5, 3, 5, 1, 3, 9], loại bỏ phần tử trùng và in kết quả.
Cho hai nhóm học viên, tìm những người học cả hai nhóm.
Đế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.
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.
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.
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ạ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.
Python for data analysis là cách dùng Python để làm sạch, thống kê và vẽ biểu đồ dữ liệu bằng Pandas...
Python list là kiểu dữ liệu lưu nhiều giá trị trong một biến, viết trong ngoặc vuông và ngăn cách bằ...
Toán tử trong Python là ký hiệu hoặc từ khóa dùng để tính toán và so sánh giá trị trong code, như +,...