circle-nodesTập hợp (Set)

1. Set là gì?

Set là một cấu trúc dữ liệu cho phép lưu trữ các phần tử không trùng lặpkhông có thứ tự. Set rất hữu ích khi bạn cần loại bỏ các phần tử trùng lặp hoặc thực hiện các phép toán tập hợp.

Đặc điểm của Set:

  • Không có thứ tự: Các phần tử không được sắp xếp theo thứ tự cụ thể

  • Không trùng lặp: Mỗi phần tử chỉ xuất hiện một lần

  • Có thể thay đổi (mutable): Có thể thêm, xoá phần tử

  • Phần tử phải là immutable: Chỉ chứa các kiểu dữ liệu không thay đổi (số, chuỗi, tuple)

  • Không có index: Không thể truy cập bằng index như List

Ví dụ set hợp lệ:

numbers = {1, 2, 3, 4, 5}
fruits = {"apple", "banana", "orange"}
mixed = {1, "hello", 3.14, True}

2. Sự khác biệt giữa Set, List và Dictionary

Đặc điểm
List
Tuple
Set
Dictionary

Ký hiệu

[]

()

{}

{"key": "value"}

Có thứ tự

Không

Không (3.7+ có)

Trùng lặp

Không

Key không trùng

Thay đổi

Không

Truy cập

Index

Index

Không

Key

3. Cách tạo Set

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

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

Tạo set rỗng

Set tự động loại bỏ phần tử trùng lặp

4. Các thao tác cơ bản với Set

Lấy số lượng phần tử

Kiểm tra phần tử có trong set không

Thêm phần tử

Xoá phần tử

5. Các phương thức quan trọng của Set

Phương thức
Chức năng
Ví dụ

add(x)

Thêm phần tử x

my_set.add(5)

update(iterable)

Thêm nhiều phần tử

my_set.update([1, 2, 3])

remove(x)

Xoá x (lỗi nếu không có)

my_set.remove(5)

discard(x)

Xoá x (không lỗi)

my_set.discard(5)

pop()

Xoá và trả về phần tử

my_set.pop()

clear()

Xoá toàn bộ

my_set.clear()

copy()

Tạo bản sao

new_set = my_set.copy()

Ví dụ chi tiết

6. Các phép toán tập hợp

Set hỗ trợ các phép toán toán học trên tập hợp:

Hợp (Union) - Gộp hai tập hợp

Giao (Intersection) - Phần tử chung

Hiệu (Difference) - Phần tử khác nhau

Hiệu đối xứng (Symmetric Difference) - Phần tử không chung

7. Các phương thức so sánh Set

Phương thức
Chức năng
Toán tử

issubset()

Kiểm tra tập con

<=

issuperset()

Kiểm tra tập cha

>=

isdisjoint()

Kiểm tra rời rạc

-

Tập con (Subset)

Tập cha (Superset)

Tập rời rạc (Disjoint)

8. Duyệt Set bằng vòng lặp

Lưu ý: Set không có thứ tự, nên thứ tự in ra có thể khác nhau mỗi lần chạy!

9. Chuyển đổi giữa các kiểu dữ liệu

List sang Set (loại bỏ trùng lặp)

Set sang List

Set sang Tuple

10. Khi nào nên dùng Set?

Nên dùng Set khi:

  1. Loại bỏ phần tử trùng lặp:

  2. Kiểm tra membership nhanh (phần tử có trong tập hợp không):

  3. Thực hiện phép toán tập hợp:

  4. Lưu trữ các phần tử duy nhất:

11. Frozen Set

Frozen Set là set không thể thay đổi (immutable):

12. Ví dụ thực tế

Ví dụ 1: Loại bỏ từ trùng lặp

Ví dụ 2: Tìm học sinh học cả hai môn

Ví dụ 3: Kiểm tra danh sách cho phép

Bài giảng trên YouTube

Cập nhật sau

Last updated