Vòng lặp trong Python

Trong ngôn ngữ lập trình Python, có ba loại vòng lặp phổ biến: vòng lặp for, vòng lặp while, và kỹ thuật tạo danh sách bằng biểu thức danh sách (list comprehension).

Vòng lặp for

Vòng lặp for được sử dụng để duyệt qua các chuỗi hoặc đối tượng có thể lặp lại và thực thi một đoạn mã cho mỗi phần tử.

# Duyệt qua dãy số từ 0 đến 4
for count in range(5):
    print(count)

Hàm enumerate() giúp lấy cả chỉ số và giá trị của từng phần tử khi duyệt danh sách:

# In ra chỉ số và giá trị tương ứng
data_list = ['alpha', 'beta', 'gamma']
for index, item in enumerate(data_list):
    print(index, item)

Sử dụng hàm zip() để cùng lúc duyệt nhiều danh sách song song:

# Kết hợp hai danh sách thành cặp giá trị
numbers = [10, 20, 30]
letters = ['x', 'y', 'z']
for position, (num_val, letter_val) in enumerate(zip(numbers, letters)):
    print(position, num_val, letter_val)

Mô-đun itertools hỗ trợ xử lý các cấu trúc dữ liệu phức tạp hơn như nhóm các phần tử giống nhau:

import itertools

# Nhóm các ký tự liên tiếp giống nhau
sequence = ['m', 'n', 'm', 'o', 'm', 'n']
for key_char, group_items in itertools.groupby(sequence):
    print(key_char, list(group_items))

Dùng biểu thức generator giúp tiết kiệm bộ nhớ khi làm việc với tập dữ liệu lớn:

# Tạo chuỗi bình phương mà không lưu toàn bộ vào RAM
gen_expr = (val ** 2 for val in range(6))
for computed_value in gen_expr:
    print(computed_value)

Vòng lặp while

Vòng lặp while sẽ tiếp tục chạy miễn là điều kiện còn đúng. Có thể không chạy lần nào nếu điều kiện ban đầu đã sai.

# In các số từ 0 đến 4
counter = 0
while counter < 5:
    print(counter)
    counter += 1

Câu lệnh break dùng để thoát khỏi vòng lặp bất cứ lúc nào:

# Vòng lặp vô hạn nhưng dừng ở giá trị 5
index = 0
while True:
    print(index)
    index += 1
    if index == 5:
        break

Từ khóa else sau while sẽ thực hiện nếu vòng lặp kết thúc tự nhiên mà không bị ngắt bởi break:

# In thông báo sau khi hoàn tất đếm
step = 0
while step < 5:
    print(step)
    step += 1
else:
    print("Hoàn thành!")

Trong ví dụ dưới đây, kiểm tra tính chẵn lẻ của số trong vòng lặp:

# Phân loại số chẵn và lẻ
for number in range(5):
    result = "chẵn" if number % 2 == 0 else "lẻ"
    print(f"{result}: {number}")

Biểu thức danh sách (List Comprehension)

Là cách viết ngắn gọn để tạo danh sách dựa trên các vòng lặp và điều kiện.

# Tạo danh sách các bình phương
square_values = [n ** 2 for n in range(5)]
print(square_values)

Kết hợp với điều kiện lọc các phần tử mong muốn:

# Chỉ giữ lại bình phương của số chẵn
even_square_vals = [n ** 2 for n in range(5) if n % 2 == 0]
print(even_square_vals)

Áp dụng hàm lambda bên trong biểu thức danh sách:

# Định nghĩa hàm lambda để tính bình phương
power_funcs = [lambda x=x: x ** 2 for x in range(5)]
results = [func() for func in power_funcs]
print(results)

Sử dụng enumerate() để lấy vị trí và giá trị trong quá trình tạo danh sách:

# Tạo danh sách tuple gồm chỉ số và bình phương
indexed_squares = [(idx, val ** 2) for idx, val in enumerate(range(5))]
print(indexed_squares)

Thẻ: python for-loop while-loop list-comprehension itertools

Đăng vào ngày 27 tháng 8 lúc 15:18