Khi làm việc với set, đôi khi chúng ta cần duyệt qua các phần tử bên trong để thực hiện các thao tác khác nhau. Bài viết này sẽ giới thiệu một phần các phương pháp thực hiện vòng lặp với set trong Python, từ cách sử dụng vòng lặp for, vòng lặp while, set comprehension, hàm enumerate() và phương thức add().
Các điểm chính
Đọc xong bài viết, bạn sẽ:
- Làm chủ các phương pháp lặp qua set: Bạn sẽ học được cách sử dụng các vòng lặp (for, while), set comprehension và hàm
enumerate()
để truy xuất và thao tác với các phần tử trong set. - Nắm vững cú pháp và cách dùng từng loại vòng lặp: Bạn sẽ được cung cấp cú pháp rõ ràng và ví dụ minh họa cụ thể cho từng loại vòng lặp.
- Ứng dụng vòng lặp set vào thực tế: Các ví dụ trong bài viết sẽ giúp bạn hình dung được cách sử dụng vòng lặp với set trong các bài toán thực tế.
- Nắm được phương thức
add()
: Bạn có thể đề cập đến một cách duyệt phần tử set bằng phương thứcadd()
này như một phương thức cộng thêm giúp bài viết phong phú hơn. - Tìm hiểu về dịch vụ VPS Vietnix – Linh hoạt & tùy chỉnh theo nhu cầu.
Vòng lặp với set trong Python
Vòng lặp với set trong Python đề cập đến việc duyệt qua từng phần tử trong một set. Sau khi truy cập từng phần tử, chúng ta có thể thực hiện các thao tác cần thiết trên phần tử đó. Các thao tác này có thể bao gồm in các phần tử, thực hiện các phép toán có điều kiện, lọc các phần tử,…

Khác với list và tuple, set là các tập hợp không có thứ tự, vì vậy các phần tử sẽ được truy cập theo một thứ tự bất kỳ. Bạn có thể sử dụng vòng lặp for để duyệt qua các phần tử trong một set.
Duyệt qua phần tử của set bằng vòng lặp for
Trong vòng lặp for, bạn có thể truy cập từng phần tử trong chuỗi (hoặc set trong trường hợp này) bằng cách sử dụng một biến. Biến này sẽ lần lượt nhận giá trị của từng phần tử, cho phép bạn thực hiện các thao tác hoặc xử lý logic dựa trên giá trị của phần tử đó. Ta hoàn toàn có thể sử dụng vòng for để thực hiện vòng lặp với set trong Python
Cú pháp
Dưới đây là cú pháp cơ bản để duyệt qua các phần tử trong một set sử dụng vòng lặp for
trong Python:
for phần_tử in tên_set:
# Khối lệnh để thực thi
Ví dụ
Trong ví dụ sau, ta sử dụng vòng lặp for để duyệt qua từng phần tử trong set có tên my_set
và in từng phần tử ra màn hình:
# Khai báo một set với các loại trái cây
trai_cay = {"táo", "chuối", "cam", "xoài", "dâu"}
# Dùng vòng lặp for để duyệt qua từng loại trái cây
for qua in trai_cay:
# In ra từng loại trái cây
print("Trái cây:", qua)
Khi chạy đoạn code trên, kết quả trên màn hình sẽ là (thứ tự có thể khác do set không duy trì thứ tự):
Trái cây: chuối
Trái cây: táo
Trái cây: cam
Trái cây: xoài
Trái cây: dâu
Giải thích:
trai_cay = {"táo", "chuối", "cam", "xoài", "dâu"}
: Khởi tạo một set có têntrai_cay
, set này chứa các chuỗi là tên của các loại trái cây.for qua in trai_cay:
: Bắt đầu vòng lặpfor
. Với mỗi lần lặp, biếnqua
sẽ lần lượt nhận giá trị là từng phần tử củatrai_cay
.print("Trái cây:", qua)
: Trong mỗi lần lặp, câu lệnh này sẽ in ra chuỗi “Trái cây:” kèm theo giá trị hiện tại của biếnqua
(tức là tên của một loại trái cây).
Duyệt qua các phần tử của set với vòng lặp while
Chúng ta có thể thực hiện vòng lặp với set trong Python sử dụng vòng lặp while bằng cách chuyển đổi set thành một đối tượng iterator và sau đó lặp qua từng phần tử cho đến khi iterator duyệt hết set.
Trong ví dụ dưới đây, chúng ta sẽ lặp qua một set bằng cách sử dụng một iterator và vòng lặp while. Khối “try” lấy và in ra từng phần tử, trong khi khối “except StopIteration” sẽ ngắt vòng lặp khi không còn phần tử nào để lấy nữa:
# Khai báo một set với nhiều phần tử
my_set = {1, 2, 3, 4, 5}
# Chuyển set thành một iterator
set_iterator = iter(my_set)
# Lặp qua từng phần tử trong set sử dụng vòng lặp while
while True:
try:
# Lấy phần tử tiếp theo từ iterator
phan_tu = next(set_iterator)
# Thực hiện các thao tác trên mỗi phần tử
print("Phần tử:", phan_tu)
except StopIteration:
# Nếu StopIteration xảy ra (hết phần tử), ngắt vòng lặp
break
Kết quả của đoạn mã trên như sau:
Phần tử: 1
Phần tử: 2
Phần tử: 3
Phần tử: 4
Phần tử: 5
Giải thích code chi tiết:
my_set = {1, 2, 3, 4, 5}
: Dòng này tạo một set tên làmy_set
chứa các số nguyên từ 1 đến 5.set_iterator = iter(my_set)
: Hàmiter()
chuyển đổi setmy_set
thành một đối tượng iterator, và đối tượng này được gán cho biếnset_iterator
. Iterator cho phép ta duyệt qua các phần tử của set.while True:
: Đây là vòng lặpwhile
với điều kiện luôn đúng (True
), nghĩa là về lý thuyết vòng lặp này sẽ chạy mãi mãi. Tuy nhiên, chúng ta có cơ chế để dừng vòng lặp này.try...except StopIteration:
: Đây là cấu trúctry...except
dùng để xử lý ngoại lệ (exception). Cụ thể trong trường hợp này là xử lý ngoại lệStopIteration
.phan_tu = next(set_iterator)
: Bên trong khốitry
, hàmnext()
được gọi với đối sốset_iterator
. Hàmnext()
trả về phần tử tiếp theo trong iterator. Lần đầu tiên được gọi, nó sẽ trả về phần tử đầu tiên. Lần thứ hai, trả về phần tử thứ hai, và cứ tiếp tục như vậy. Khi đến cuối, nếunext
được gọi mà không còn phần tử, một ngoại lệStopIteration
sẽ được sinh ra.print("Phần tử:", phan_tu)
: Nếu lấy được phần tử thành công, lệnhprint
sẽ in ra giá trị củaphan_tu
.except StopIteration: break
: Khi ngoại lệStopIteration
xảy ra (có nghĩa là đã duyệt qua tất cả phần tử trong set), khốiexcept
này được thực hiện, và lệnhbreak
được gọi. Lệnhbreak
có tác dụng kết thúc vòng lặpwhile
.
Duyệt phần tử set với set comprehension
Chúng ta có thể duyệt qua sử dụng set comprehension bằng cách định nghĩa một biểu thức set comprehension bên trong cặp dấu ngoặc nhọn {}
và chỉ định logic của vòng lặp và điều kiện trong biểu thức. Cú pháp như sau:
set_ket_qua = {bieu_thuc for phan_tu in doi_tuong_iterable if dieu_kien}
Trong đó:
bieu_thuc
: Một biểu thức để tính toán cho mỗiphan_tu
trongdoi_tuong_iterable
.phan_tu
: Một biến đại diện cho mỗi phần tử trongdoi_tuong_iterable
.doi_tuong_iterable
: Một tập hợp để duyệt qua (ví dụ:list
,tuple
,set
).dieu_kien
: Một điều kiện tùy chọn để lọc các phần tử được đưa vào set kết quả.
Trong ví dụ này, chúng ta sẽ dùng set comprehension để tạo một set chứa bình phương của các số chẵn trong một list ban đầu, đồng thời những số đó phải lớn hơn 5.
# List ban đầu
danh_sach_so = [2, 4, 6, 8, 10, 3, 5, 7, 9]
# Set comprehension để tạo set chứa bình phương của các số chẵn lớn hơn 5
binh_phuong_so_chan_lon_hon_5 = {x**2 for x in danh_sach_so if x % 2 == 0 and x > 5}
# In set kết quả
print(binh_phuong_so_chan_lon_hon_5)
Khi chạy đoạn code trên, kết quả hiển thị sẽ như sau:
{64, 100}
Giải thích:
danh_sach_so
: làlist
ban đầu chứa các số nguyên.{x**2 for x in danh_sach_so if x % 2 == 0 and x > 5}
: là biểu thức “set comprehension”.x**2
: Đây là biểu thức sẽ được tính toán (bình phương củax
).for x in danh_sach_so
: Vòng lặp duyệt qua từng phần tửx
trongdanh_sach_so
.if x % 2 == 0 and x > 5
: Điều kiện: chỉ những sốx
nào chia hết cho 2 (số chẵn) và lớn hơn 5 mới được xét.- Kết quả, chỉ có 8 và 10 là hai số trong danh sách gốc thỏa mãn hai điều kiện: chẵn (chia hết cho 2), và lớn hơn 5. Do vậy, set kết quả gồm bình phương của 8 và 10, là {64, 100}.
Duyệt qua các phần tử set với hàm enumerate()
Chúng ta có thể duyệt qua các phần tử của một Set bằng cách sử dụng hàm enumerate()
thông qua việc chuyển Set thành một List trước, sau đó áp dụng enumerate()
để lặp qua các phần tử cùng với vị trí chỉ số của chúng. Dưới đây là cú pháp:
for index, item in enumerate(list(my_set)):
# Phần code xử lý của bạn
Trong ví dụ sau, chúng ta sẽ chuyển một Set thành List. Sau đó, vòng lặp với Set trong Python sẽ được thực hiện thông qua vòng lặp for kết hợp với hàm enumerate()
, lấy ra từng phần tử cùng với chỉ số tương ứng:
# Chuyển đổi Set thành List
my_set = {1, 2, 3, 4, 5}
set_list = list(my_set)
# Duyệt qua các phần tử của List
for index, item in enumerate(set_list):
print("Chỉ số:", index, "Giá trị:", item)
Kết quả hiển thị trên màn hình sẽ như sau:
Chỉ số: 0 Giá trị: 1
Chỉ số: 1 Giá trị: 2
Chỉ số: 2 Giá trị: 3
Chỉ số: 3 Giá trị: 4
Chỉ số: 4 Giá trị: 5
Duyệt phần tử của set với phương thức add()
Chúng ta không thể trực tiếp duyệt qua các phần tử của set bằng cách sử dụng phương thức add()
bởi vì add()
được dùng để thêm phần tử vào set, không phải để lặp qua các phần tử đã có. Để duyệt qua các phần tử trong một set ta sẽ sử dụng vòng lặp như là vòng lặp for hoặc cú pháp set comprehension.
Trong ví dụ này, chúng ta sẽ duyệt qua một chuỗi số và thêm từng số vào set bằng phương thức add()
. Vòng lặp for duyệt qua các phần tử hiện có, trong khi add()
thêm các phần tử mới vào set đó:
# Tạo một set rỗng
my_set = set()
# Duyệt qua một chuỗi và thêm các phần tử vào set
for i in range(5):
my_set.add(i)
print(my_set)
Kết quả sẽ như sau:
{0, 1, 2, 3, 4}
Giải thích:
my_set = set()
: Dòng này tạo một set rỗng có tên làmy_set
.for i in range(5):
: Đây là một vòng lặpfor
. Biếni
sẽ lần lượt nhận các giá trị từ 0 đến 4 (dorange(5)
tạo ra một chuỗi số từ 0 đến 4).my_set.add(i)
: Bên trong vòng lặp, phương thứcadd()
được gọi trênmy_set
. Trong mỗi lần lặp, giá trị hiện tại củai
được thêm vào set.print(my_set)
: Sau khi vòng lặp kết thúc, câu lệnh này in ra setmy_set
. Kết quả cho thấy set chứa các số từ 0 đến 4. Vì set chỉ chứa các phần tử duy nhất, nên dù ta có thêm một phần tử đã tồn tại nhiều lần, nó cũng chỉ xuất hiện một lần trong set.
Dịch vụ VPS Vietnix – Linh hoạt & tùy chỉnh theo nhu cầu
Trải nghiệm hiệu suất vượt trội và sự ổn định tuyệt đối với dịch vụ thuê VPS của Vietnix. Tăng tốc website, tối ưu trải nghiệm người dùng và thúc đẩy doanh số bán hàng với ổ cứng SSD/NVMe Enterprise, CPU Intel Xeon/AMD mạnh mẽ và công nghệ ảo hóa tiên tiến. Vietnix cam kết mang đến tốc độ mạng cao, sao lưu dữ liệu tự động hàng tuần, và giao diện quản lý Portal tiện dụng. Khám phá sự linh hoạt với đa dạng hệ điều hành và tùy chỉnh máy chủ theo nhu cầu.
Bứt phá hiệu năng website với VPS AMD của Vietnix. Được trang bị ổ cứng NVMe Enterprise siêu tốc và CPU AMD EPYC mạnh mẽ, dịch vụ này đảm bảo tốc độ xử lý vượt trội và thời gian phản hồi nhanh chóng, giúp website vận hành mượt mà và tối đa hóa chuyển đổi. Kết hợp với tốc độ mạng cao, VPS AMD là giải pháp lý tưởng cho các doanh nghiệp đòi hỏi hiệu suất cao.
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/
Vậy là chúng ta đã cùng nhau khám phá các phương pháp lặp qua các phần tử của set trong Python, từ vòng lặp for, while, set comprehension, hàm enumerate() đến phương thức add(). Hy vọng bài viết này đã cung cấp cho bạn những kiến thức hữu ích để bạn có thể làm việc hiệu quả hơn với set trong các dự án Python của mình.
Mọi người cũng đọc