Python - For Loops

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.

Syntax of Python for Loop

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ý.

Flowchart of Python for Loop

Sơ đồ luồng dưới đây minh họa cách hoạt động của vòng lặp for

forloop

Python for Loop with Strings

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.

Example

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 for Loop with Tuples

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 .

Example

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 for Loop with Lists

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 .

Example

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

Python for Loop with Range Objects

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.

Syntax

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.

Example

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

Python for Loop with Dictionaries

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.

Example

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() .

Example

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.

Example

Đố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')

Using else Statement with For Loop

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.

Example

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