Khóa học python

Vòng lặp của Set trong Python

0 phút đọc

Sử dụng vòng lặp for

Vòng lặp for là cách phổ biến nhất để duyệt qua các phần tử của một 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 hàm enumerate()

Hàm enumerate() cho phép bạn duyệt qua các phần tử của set và đồng thời truy cập cả chỉ số và giá trị của từng phần tử. Tuy nhiên, do set không có thứ tự, chỉ số được tạo ra bởi enumerate() không phản ánh thứ tự ban đầu của các phần tử.

my_set = {"apple", "banana", "cherry"}
for index, value in enumerate(my_set):
    print(f"Index: {index}, Value: {value}")
# Output có thể khác nhau do set không có thứ tự:
# Index: 0, Value: apple
# Index: 1, Value: banana
# Index: 2, Value: cherry

Vòng lặp qua các set lồng nhau

Nếu bạn có một set lồng nhau, bạn có thể sử dụng vòng lặp lồng nhau để duyệt qua các phần tử bên trong.

nested_set = {frozenset({1, 2}), frozenset({3, 4}), frozenset({5, 6})}
for outer in nested_set:
    for inner in outer:
        print(inner)
# Output có thể khác nhau do set không có thứ tự:
# 1
# 2
# 3
# 4
# 5
# 6

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

Các phương pháp khác để duyệt qua Set

Sử dụng hàm iter()

Hàm iter() trả về một iterator cho set, cho phép bạn duyệt qua các phần tử của set bằng cách sử dụng vòng lặp while.

my_set = {"apple", "banana", "cherry"}
set_iterator = iter(my_set)
while True:
    try:
        item = next(set_iterator)
        print(item)
    except StopIteration:
        break
# Output có thể khác nhau do set không có thứ tự:
# apple
# banana
# cherry

Sử dụng hàm map()

Hàm map() có thể được sử dụng để áp dụng một hàm cho mỗi phần tử của set.

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

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}

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 vòng lặp để duyệt qua các phần tử 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ách sử dụng vòng lặp với set trong Python.

Avatar
Được viết bởi

TechMely Team

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

entry

Nêu một số đặc điểm của Python?

entry

Liệt kê các kiểu dữ liệu trong Python?

entry

Biến cục bộbiến toàn cục trong Python là gì?

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