Khóa học python

Tổng hợp các hàm của Set trong Python

0 phút đọc

Set là một trong những cấu trúc dữ liệu cơ bản trong Python, được sử dụng để lưu trữ các phần tử duy nhất và không có thứ tự. Set có thể chứa các kiểu dữ liệu khác nhau như số nguyên, chuỗi, và các kiểu dữ liệu không thay đổi khác. Một trong những đặc điểm quan trọng của set là không cho phép các phần tử trùng lặp.

Tạo Set

Bạn có thể tạo một set bằng cách sử dụng cặp dấu ngoặc nhọn {} hoặc hàm set().

# Tạo set bằng cặp dấu ngoặc nhọn
my_set = {1, 2, 3, 4, 5}
print(my_set)  # Output: {1, 2, 3, 4, 5}

# Tạo set bằng hàm set()
another_set = set([1, 2, 3, 4, 5])
print(another_set)  # Output: {1, 2, 3, 4, 5}

Truy cập phần tử trong Set

Do set là một cấu trúc dữ liệu không có thứ tự, bạn không thể truy cập các phần tử bằng chỉ số như trong danh sách. Tuy nhiên, bạn có thể duyệt qua các phần tử của set bằng cách sử dụng vòng lặp.

Các phương thức của Set

Python cung cấp nhiều phương thức để làm việc với set, bao gồm add(), remove(), pop(), clear(), union(), intersection(), difference(), và nhiều phương thức khác.

Thêm phần tử vào Set

Phương thức add() thêm một phần tử vào set.

my_set = {"apple", "banana"}
my_set.add("cherry")
print(my_set)  # Output: {'apple', 'banana', 'cherry'}

Xóa phần tử khỏi Set

Phương thức remove() xóa một phần tử khỏi set. Nếu phần tử không tồn tại, nó sẽ gây ra lỗi KeyError.

my_set = {"apple", "banana", "cherry"}
my_set.remove("banana")
print(my_set)  # Output: {'apple', 'cherry'}

Phương thức discard() cũng xóa một phần tử khỏi set, nhưng không gây ra lỗi nếu phần tử không tồn tại.

my_set = {"apple", "banana", "cherry"}
my_set.discard("banana")
print(my_set)  # Output: {'apple', 'cherry'}

Phương thức pop() xóa và trả về một phần tử ngẫu nhiên từ set.

my_set = {"apple", "banana", "cherry"}
popped_item = my_set.pop()
print(popped_item)  # Output có thể khác nhau do set không có thứ tự
print(my_set)  # Output có thể khác nhau do set không có thứ tự

Phương thức clear() xóa tất cả các phần tử khỏi set.

my_set = {"apple", "banana", "cherry"}
my_set.clear()
print(my_set)  # Output: set()

Các phép toán trên Set

Set hỗ trợ các phép toán tập hợp như hợp (union), giao (intersection), hiệu (difference), và hiệu đối xứng (symmetric difference).

Phép hợp (Union)

Phép hợp trả về một set chứa tất cả các phần tử của các set đầu vào.

set1 = {1, 2, 3}
set2 = {3, 4, 5}
union_set = set1.union(set2)
print(union_set)  # Output: {1, 2, 3, 4, 5}

Phép giao (Intersection)

Phép giao trả về một set chứa các phần tử chung của các set đầu vào.

set1 = {1, 2, 3}
set2 = {3, 4, 5}
intersection_set = set1.intersection(set2)
print(intersection_set)  # Output: {3}

Phép hiệu (Difference)

Phép hiệu trả về một set chứa các phần tử có trong set đầu tiên nhưng không có trong set thứ hai.

set1 = {1, 2, 3}
set2 = {3, 4, 5}
difference_set = set1.difference(set2)
print(difference_set)  # Output: {1, 2}

Phép hiệu đối xứng (Symmetric Difference)

Phép hiệu đối xứng trả về một set chứa các phần tử có trong một trong hai set nhưng không có trong cả hai.

set1 = {1, 2, 3}
set2 = {3, 4, 5}
symmetric_difference_set = set1.symmetric_difference(set2)
print(symmetric_difference_set)  # Output: {1, 2, 4, 5}

Các phương thức khác của Set

Phương thức copy()

Phương thức copy() trả về một bản sao của set.

my_set = {"apple", "banana", "cherry"}
copy_set = my_set.copy()
print(copy_set)  # Output: {'apple', 'banana', 'cherry'}

Phương thức update()

Phương thức update() thêm các phần tử từ một iterable khác vào set hiện tại.

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.update(set2)
print(set1)  # Output: {1, 2, 3, 4, 5}

Phương thức difference_update()

Phương thức difference_update() xóa các phần tử trong set hiện tại mà cũng có trong set khác.

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.difference_update(set2)
print(set1)  # Output: {1, 2}

Phương thức intersection_update()

Phương thức intersection_update() giữ lại các phần tử trong set hiện tại mà cũng có trong set khác.

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.intersection_update(set2)
print(set1)  # Output: {3}

Phương thức symmetric_difference_update()

Phương thức symmetric_difference_update() giữ lại các phần tử có trong một trong hai set nhưng không có trong cả hai.

set1 = {1, 2, 3}
set2 = {3, 4, 5}
set1.symmetric_difference_update(set2)
print(set1)  # Output: {1, 2, 4, 5}

Các hàm tích hợp khác

Hàm len()

Hàm len() trả về số lượng phần tử trong set.

my_set = {"apple", "banana", "cherry"}
length = len(my_set)
print(length)  # Output: 3

Hàm sum()

Hàm sum() trả về tổng của các phần tử trong set (chỉ áp dụng cho set chứa số).

numbers = {1, 2, 3, 4, 5}
total = sum(numbers)
print(total)  # Output: 15

Hàm min()max()

Hàm min() trả về phần tử nhỏ nhất trong set, và hàm max() trả về phần tử lớn nhất.

numbers = {1, 2, 3, 4, 5}
minimum = min(numbers)
maximum = max(numbers)
print(minimum)  # Output: 1
print(maximum)  # Output: 5

Duyệt qua các phần tử trong Set

Bạn có thể sử dụng vòng lặp for để duyệt qua các phần tử trong set.

my_set = {"apple", "banana", "cherry"}
for item in my_set:
    print(item)
# Output có thể khác nhau do set không có thứ tự:
# apple
# banana
# cherry

Sử dụng List Comprehension để duyệt qua Set

Mặc dù không có set comprehension trong Python, bạn có thể sử dụng list comprehension và sau đó chuyển đổi kết quả thành set.

my_set = {1, 2, 3, 4, 5}
squared_set = {x**2 for x in my_set}
print(squared_set)  # Output: {1, 4, 9, 16, 25}

Sử dụng Generator Expression để duyệt qua Set

Generator expression là một cách hiệu quả về bộ nhớ để tạo ra các giá trị khi cần thiết, thay vì lưu trữ tất cả các giá trị trong bộ nhớ như list comprehension.

my_set = {1, 2, 3, 4, 5}
squared_generator = (x**2 for x in my_set)
for value in squared_generator:
    print(value)
# Output:
# 1
# 4
# 9
# 16
# 25

Kết luận

Set là một cấu trúc dữ liệu mạnh mẽ và hữu ích trong Python, đặc biệt khi bạn cần lưu trữ các phần tử duy nhất và không có thứ tự. Việc hiểu và sử dụng các phương thức và hàm của set sẽ giúp bạn làm việc hiệu quả hơn với loại dữ liệu này. Hy vọng bài viết này đã cung cấp cho bạn một cái nhìn tổng quan và chi tiết về các hàm và phương thức của set trong Python.

Avatar
Được viết bởi

TechMely Team

Gợi ý câu hỏi phỏng vấn

entry

Giải thích trường hợp nào sử dụng danh sách liên kết và trường hợp nào sử dụng mảng?

entry

Dữ liệu được lưu trữ trong container sẽ bị mất trong những trường hợp nào?

entry

Làm thế nào để gọi hàm constructor của lớp cơ sở từ lớp con trong TypeScript?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào

Khoá học javascript từ cơ bản đến chuyên sâuYoutube Techmely