Vòng lặp for loop trong Python cung cấp khả năng lặp qua các mục của bất kỳ chuỗi nào, chẳng hạn như danh sách, tuple hoặc chuỗi. Nó thực hiện cùng một hành động trên mỗi mục của chuỗi. Vòng lặp này bắt đầu với từ khóa for , theo sau là một biến đại diện cho mục hiện tại trong chuỗi. Từ khóa in liên kết biến với chuỗi mà bạn muốn lặp qua. Một colon (:) được sử dụng ở cuối tiêu đề vòng lặp, và khối mã thụt lề bên dưới nó được thực thi một lần cho mỗi mục trong chuỗi.
for iterating_var in sequence: statement(s)
Ở đây, iterating_var là một biến mà giá trị của từng mục trong chuỗi sẽ được gán trong mỗi lần lặp. Statements đại diện cho khối mã mà bạn muốn thực thi lặp đi lặp lại.
Trước khi vòng lặp bắt đầu, chuỗi được đánh giá. Nếu đó là một danh sách, biểu thức danh sách (nếu có) sẽ được đánh giá trước. Sau đó, mục đầu tiên (tại chỉ số 0) trong chuỗi được gán cho biến iterating_var .
Trong mỗi vòng lặp, khối lệnh được thực thi với giá trị hiện tại của iterating_var . Sau đó, mục tiếp theo trong chuỗi được gán cho iterating_var , và vòng lặp tiếp tục cho đến khi toàn bộ chuỗi được xử lý.
Sơ đồ luồng dưới đây minh họa cách hoạt động của vòng lặp for −
Một string là một chuỗi các Unicode chữ cái, mỗi chữ cái có một chỉ số vị trí. Vì đây là một chuỗi, bạn có thể lặp qua các ký tự của nó bằng cách sử dụng vòng lặp for.
Ví dụ sau so sánh từng ký tự và hiển thị nếu nó không phải là nguyên âm ('a', 'e', 'i', 'o', 'u').
zen = ''' Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. ''' for char in zen: if char not in 'aeiou': print (char, end='')
Khi thực thi, mã này sẽ tạo ra đầu ra sau:
Btfl s bttr thn gly. Explct s bttr thn mplct. Smpl s bttr thn cmplx. Cmplx s bttr thn cmplctd.
Python's tuple đối tượng cũng là một chuỗi có chỉ số, do đó bạn có thể duyệt các mục của nó bằng một vòng lặp for .
Trong ví dụ sau, vòng lặp for duyệt qua một tuple chứa các số nguyên và trả về tổng của tất cả các số.
numbers = (34,54,67,21,78,97,45,44,80,19) total = 0 for num in numbers: total += num print ("Total =", total)
Khi chạy đoạn mã này, nó sẽ tạo ra đầu ra sau:
Total = 539
Python's list đối tượng cũng là một chuỗi được lập chỉ mục, vì vậy bạn có thể lặp qua các mục của nó bằng cách sử dụng một vòng lặp for .
Trong ví dụ dưới đây, vòng lặp for duyệt qua một danh sách chứa các số nguyên và chỉ in ra những số chia hết cho 2.
numbers = [34,54,67,21,78,97,45,44,80,19] total = 0 for num in numbers: if num%2 == 0: print (num)
Khi bạn thực thi đoạn mã này, nó sẽ hiển thị kết quả sau:
34 54 78 44 80
Hàm range() tích hợp sẵn của Python trả về một đối tượng iterator mà phát luồng một chuỗi số. Đối tượng này chứa các số nguyên từ start đến stop, được phân tách bởi tham số step. Bạn cũng có thể chạy một vòng lặp for với range.
Hàm range() có cú pháp sau −
range(start, stop, step)
Nơi nào,
Start − Giá trị bắt đầu của khoảng. Tùy chọn. Mặc định là 0.
Stop − Phạm vi đi đến stop-1.
Step − Các số nguyên trong khoảng tăng lên theo giá trị bước. Tùy chọn, mặc định là 1.
Trong ví dụ này, chúng ta sẽ xem cách sử dụng hàm range với vòng lặp for.
for num in range(5): print (num, end=' ') print() for num in range(10, 20): print (num, end=' ') print() for num in range(1, 10, 2): print (num, end=' ')
Khi bạn chạy đoạn mã trên, nó sẽ tạo ra đầu ra sau đây −
0 1 2 3 4 10 11 12 13 14 15 16 17 18 19 1 3 5 7 9
Khác với danh sách, tuple hoặc chuỗi, kiểu dữ liệu dictionary trong Python không phải là một chuỗi, vì các mục không có chỉ số vị trí. Tuy nhiên, việc duyệt qua một từ điển vẫn có thể thực hiện được với vòng lặp for.
Chạy một vòng lặp for đơn giản trên đối tượng từ điển sẽ duyệt qua các khóa được sử dụng trong đó.
numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"} for x in numbers: print (x)
Khi thực thi, đoạn mã này sẽ tạo ra output −
10 20 30 40
Khi chúng ta có thể lấy được khóa, giá trị liên quan của nó có thể dễ dàng được truy cập bằng cách sử dụng toán tử dấu ngoặc vuông hoặc với phương thức get() .
Ví dụ dưới đây minh họa cách tiếp cận đã đề cập ở trên.
numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"} for x in numbers: print (x,":",numbers[x])
Nó sẽ tạo ra output −
10 : Ten 20 : Twenty 30 : Thirty 40 : Forty
Các phương thức items(), keys() và values() của lớp dict trả về các đối tượng view dict_items, dict_keys và dict_values tương ứng. Những đối tượng này là các bộ lặp (iterators), vì vậy chúng ta có thể chạy một vòng lặp for trên chúng.
Đối tượng dict_items là một danh sách các bộ khóa-giá trị mà có thể chạy một vòng lặp for như sau −
numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"} for x in numbers.items(): print (x)
Nó sẽ tạo ra output −
(10, 'Ten') (20, 'Twenty') (30, 'Thirty') (40, 'Forty')
Python hỗ trợ có một câu lệnh else liên kết với câu lệnh vòng lặp. Tuy nhiên, câu lệnh else được thực thi khi vòng lặp đã hoàn tất việc lặp qua danh sách.
Ví dụ dưới đây minh họa sự kết hợp của câu lệnh else với câu lệnh for để tìm kiếm các số nguyên tố từ 10 đến 20.
#For loop to iterate between 10 to 20 for num in range(10, 20): #For loop to iterate on the factors for i in range(2,num): #If statement to determine the first factor if num%i == 0: #To calculate the second factor j=num/i print ("%d equals %d * %d" % (num,i,j)) #To move to the next number break else: print (num, "is a prime number") break
Khi đoạn mã trên được thực thi, nó sẽ tạo ra kết quả sau −
10 equals 2 * 5 11 is a prime number 12 equals 2 * 6 13 is a prime number 14 equals 2 * 7 15 equals 3 * 5 16 equals 2 * 8 17 is a prime number 18 equals 2 * 9 19 is a prime number