Trang chủHướng dẫnVòng lặp for trong python

Vòng lặp for trong python

CyStack blog 8 phút để đọc
CyStack blog23/10/2025
Locker Avatar

Chris Pham

Technical Writer

Locker logo social
Reading Time: 8 minutes

Trong bài viết chuyên sâu này, chúng ta sẽ cùng nhau khám phá mọi khía cạnh của vòng lặp for trong Python, từ cú pháp cơ bản đến các kỹ thuật nâng cao như lồng vòng lặp, sử dụng hàm range(), và kiểm soát luồng với các lệnh breakcontinue. Chúng ta sẽ đi qua từng ví dụ cụ thể, giúp bạn nắm vững cách vận dụng for loop vào các dự án thực tế.

Khi nào nên sử dụng vòng lặp for

Bạn nên sử dụng vòng lặp for bất cứ khi nào bạn cần lặp lại một khối mã một số lần cố định. Nếu bạn không biết số lần cần lặp lại, hãy sử dụng câu lệnh while loop thay thế.

Cú pháp cơ bản của vòng lặp for trong Python

Cú pháp cơ bản của vòng lặp for trong Python trông tương tự như đoạn mã dưới đây.

for iterator_variable in sequence_name:
	Statements
	. . .
	Statements

Cú pháp vòng lặp for trong Python chi tiết

Chúng ta sẽ đi sâu vào từng thành phần của cú pháp vòng lặp for:

  • Từ khóa for: Từ khóa này khởi đầu câu lệnh, báo hiệu sự bắt đầu của một vòng lặp for.
  • Biến lặp (iterator_variable): Biến này sẽ lặp qua các phần tử của sequence và bạn có thể sử dụng nó bên trong vòng lặp để thực hiện các chức năng khác nhau.
  • Từ khóa in: Từ khóa này trong Python thông báo cho biến lặp rằng nó cần duyệt qua các phần tử bên trong sequence.
  • Biến sequence: Đây có thể là một list, tuple, string, hoặc bất kỳ loại đối tượng có thể lặp.
  • Phần Statements: Đây là nơi bạn có thể xử lý biến lặp và thực hiện các chức năng mong muốn.

In từng ký tự của một chuỗi sử dụng vòng lặp for

Chuỗi (string) trong Python là một tập hợp các ký tự. Nếu trong bất kỳ ứng dụng lập trình nào của bạn, bạn cần duyệt qua từng ký tự của một chuỗi một cách riêng lẻ, bạn có thể sử dụng vòng lặp for ở đây.

Đây là cách chúng ta thực hiện:

word="anaconda"
for letter in word:
	print (letter)

Output:

a
n
a
c
o
n
d
a

Lý do vòng lặp này hoạt động là vì Python coi một string là một chuỗi các ký tự thay vì nhìn nhận toàn bộ string như một thể thống nhất.

Sử dụng vòng lặp for để lặp qua một list hoặc tuple trong Python

Các ListTuple là các đối tượng có thể lặp (iterable objects). Bây giờ, chúng ta hãy xem cách chúng ta có thể lặp qua các phần tử bên trong các đối tượng này.

words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
	print (word)

Output:

Apple
Banana
Car
Dolphin

Bây giờ, chúng ta hãy tiếp tục và thực hiện việc lặp qua các phần tử của một tuple.

nums = (1, 2, 3, 4)

sum_nums = 0

for num in nums:
    sum_nums = sum_nums + num

print(f'Sum of numbers is {sum_nums}')

# Output
# Sum of numbers is 10

Lồng các vòng lặp for trong Python

Khi chúng ta có một vòng lặp for bên trong một vòng lặp for khác, đó được gọi là vòng lặp for lồng nhau (nested for loop). Có nhiều ứng dụng cho vòng lặp for lồng nhau.

Hãy xem xét ví dụ list ở trên. Vòng lặp for in ra từng từ riêng lẻ từ list. Nhưng điều gì sẽ xảy ra nếu chúng ta muốn in ra từng ký tự của mỗi từ trong list đó?

Đây là lúc vòng lặp for lồng nhau hoạt động hiệu quả hơn. Vòng lặp bên ngoài sẽ duyệt qua từng từ một. Vòng lặp bên trong sẽ duyệt qua các ký tự của mỗi từ.

words= ["Apple", "Banana", "Car", "Dolphin" ]
for word in words:
        #Vòng lặp này đang lấy từng từ từ danh sách
        print ("The following lines will print each letters of "+word)
        for letter in word:
                #Vòng lặp này đang lấy từng chữ cái cho từ
                print (letter)
        print("") #Dòng này dùng để in ra một dòng trống

Output

The following lines will print each letters of Apple
A
p
p
l
e

The following lines will print each letters of Banana
B
a
n
a
n
a

The following lines will print each letters of Car
C
a
r

The following lines will print each letters of Dolphin
D
o
l
p
h
i
n

Vòng lặp lồng nhau có cấu trúc tương tự như các câu lệnh if lồng nhau.

Vòng lặp for trong Python với hàm range()

Hàm range() của Python là một trong những hàm tích hợp sẵn (built-in functions). Khi bạn muốn vòng lặp for chạy một số lần cụ thể hoặc bạn cần chỉ định một phạm vi các đối tượng để in ra, hàm range() hoạt động rất hiệu quả.

Khi làm việc với range(), bạn có thể truyền từ 1 đến 3 đối số kiểu số nguyên cho nó:

  • start: chỉ định giá trị số nguyên mà chuỗi bắt đầu; nếu không được bao gồm, start sẽ bắt đầu từ 0.
  • stop: luôn cần thiết và là số nguyên được đếm đến nhưng không bao gồm.
  • step: thiết lập mức tăng (hoặc giảm trong trường hợp số âm) cho lần lặp tiếp theo; nếu bỏ qua, step mặc định là 1.

Hãy xem xét ví dụ sau, nơi tôi muốn in các số 1, 2 và 3:

for x in range(3):
    print("Printing:", x)

# Output

# Printing: 0
# Printing: 1
# Printing: 2

Hàm range cũng nhận một tham số khác ngoài startstop. Đó là tham số step. Nó cho hàm range biết cần bỏ qua bao nhiêu số giữa mỗi lần đếm.

Trong ví dụ dưới đây, tôi đã sử dụng số 3 làm step và bạn có thể thấy các số đầu ra là số trước đó + 3.

for n in range(1, 10, 3):
    print("Printing with step:", n)

# Output

# Printing with step: 1
# Printing with step: 4
# Printing with step: 7

Chúng ta cũng có thể sử dụng giá trị âm cho đối số step để lặp ngược lại, nhưng chúng ta sẽ phải điều chỉnh các đối số startstop của mình cho phù hợp.

for i in range(100,0,-10):
   print(i)

Tại đây, 100 là giá trị start, 0 là giá trị stop, và -10 là step, vì vậy vòng lặp bắt đầu ở 100 và kết thúc ở 0, giảm 10 với mỗi lần lặp. Điều này xảy ra trong đầu ra:

Output
100
90
80
70
60
50
40
30
20
10

Khi lập trình trong Python, các vòng lặp for thường sử dụng kiểu sequence range() làm tham số cho việc lặp.

Câu lệnh break với vòng lặp for

Câu lệnh break được sử dụng để thoát khỏi vòng lặp for một cách sớm. Chúng ta sử dụng nó để dừng vòng lặp for khi một điều kiện cụ thể được đáp ứng.

Giả sử chúng ta có một danh sách các số và chúng ta muốn kiểm tra xem một số có tồn tại hay không. Chúng ta có thể lặp qua danh sách các số và nếu tìm thấy số đó, chúng ta thoát khỏi vòng lặp vì chúng ta không cần tiếp tục lặp qua các phần tử còn lại.

Trong trường hợp này, chúng ta sẽ sử dụng câu lệnh điều kiện if-else của Python cùng với vòng lặp for của mình.

nums = [1, 2, 3, 4, 5, 6]

n = 2

found = False
for num in nums:
    if n == num:
        found = True
        break

print(f'List contains {n}: {found}')

# Output
# List contains 2: True

Câu lệnh continue với vòng lặp for

Chúng ta có thể sử dụng câu lệnh continue bên trong vòng lặp for để bỏ qua việc thực thi thân vòng lặp for cho một điều kiện cụ thể.

Giả sử chúng ta có một danh sách các số và chúng ta muốn in tổng các số dương. Chúng ta có thể sử dụng câu lệnh continue để bỏ qua vòng lặp for cho các số âm.

nums = [1, 2, -3, 4, -5, 6]

sum_positives = 0

for num in nums:
    if num < 0:
        continue
    sum_positives += num

print(f'Sum of Positive Numbers: {sum_positives}')

Output:

Sum of Positive Numbers: 13

Vòng lặp for trong Python với khối else

Chúng ta có thể sử dụng khối else với vòng lặp for của Python. Khối else chỉ được thực thi khi vòng lặp for không bị chấm dứt bởi câu lệnh break.

Giả sử chúng ta có một hàm để in tổng các số nếu và chỉ nếu tất cả các số đều là số chẵn.

Chúng ta có thể sử dụng câu lệnh break để chấm dứt vòng lặp for nếu có một số lẻ. Chúng ta có thể in tổng trong phần else để nó chỉ được in khi vòng lặp for được thực thi bình thường.

def print_sum_even_nums(even_nums):
    total = 0

    for x in even_nums:
        if x % 2 != 0:
            break

        total += x
    else:
        print("For loop executed normally")
        print(f'Sum of numbers {total}')

# này sẽ in tổng
print_sum_even_nums([2, 4, 6, 8])

# này sẽ không in tổng vì có một số lẻ trong chuỗi
print_sum_even_nums([2, 4, 5, 8])

# Output

# For loop executed normally
# Sum of numbers 20

Vòng lặp for sử dụng các kiểu dữ liệu tuần tự

Các List và các kiểu dữ liệu tuần tự khác có thể được tận dụng làm tham số lặp trong vòng lặp for. Thay vì lặp qua một range(), bạn có thể định nghĩa một list và lặp qua list đó.

Chúng ta sẽ gán một list cho một biến, và sau đó lặp qua list đó:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for shark in sharks:
   print(shark)

Trong trường hợp này, chúng ta đang in ra từng mục trong list. Mặc dù chúng ta đã sử dụng biến shark, chúng ta có thể gọi biến đó bằng bất kỳ tên biến hợp lệ nào khác và chúng ta sẽ nhận được cùng một đầu ra:

Output
hammerhead
great white
dogfish
frilled
bullhead
requiem

Đầu ra trên cho thấy vòng lặp for đã lặp qua list và in ra từng mục từ list trên mỗi dòng.

Các List và các kiểu dữ liệu dựa trên sequence khác như stringtuple thường được sử dụng với các vòng lặp vì chúng có thể lặp (iterable). Bạn có thể kết hợp các kiểu dữ liệu này với range() để thêm các mục vào một list chẳng hạn:

sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']

for item in range(len(sharks)):
   sharks.append('shark')

print(sharks)

Output
['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']

Tại đây, chúng ta đã thêm một chuỗi giữ chỗ là 'shark' cho mỗi mục có độ dài bằng list sharks.

Tương tự, bạn có thể sử dụng vòng lặp for để xây dựng một list từ đầu:

integers = []

for i in range(10):
   integers.append(i)

print(integers)

Trong ví dụ này, list integers được khởi tạo trống, nhưng vòng lặp for điền dữ liệu vào list như sau:

Output
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Tương tự, chúng ta có thể lặp qua các chuỗi:

sammy = 'Sammy'

for letter in sammy:
   print(letter)

Output
S
a
m
m
y

Lặp qua các tuple được thực hiện theo cùng định dạng như lặp qua list hoặc string ở trên.

Khi lặp qua một dictionary, điều quan trọng là phải ghi nhớ cấu trúc key : value để đảm bảo rằng bạn đang gọi đúng phần tử của dictionary. Dưới đây là một ví dụ gọi cả keyvalue:

sammy_shark = {'name': 'Sammy', 'animal': 'shark', 'color': 'blue', 'location': 'ocean'}

for key in sammy_shark:
   print(key + ': ' + sammy_shark[key])

Output
name: Sammy
animal: shark
location: ocean
color: blue

Khi sử dụng dictionary với vòng lặp for, biến lặp tương ứng với các key của dictionary, và dictionary_variable[iterating_variable] tương ứng với các value. Trong trường hợp trên, biến lặp key được sử dụng để đại diện cho key, và sammy_shark[key] được sử dụng để đại diện cho các value.

Các vòng lặp thường được sử dụng để lặp và thao tác các kiểu dữ liệu tuần tự.

Kết luận

Vòng lặp for trong Python có nhiều điểm tương đồng với các ngôn ngữ lập trình khác, nhưng cũng mang những nét đặc trưng riêng biệt mà chúng ta đã cùng nhau khám phá. Chúng ta đã thấy cách nó là một công cụ không thể thiếu để duyệt qua các đối tượng tuần tự như list, tuple, string, và dictionary. Khả năng kiểm soát luồng với breakcontinue, cùng với việc sử dụng range() để tạo các chuỗi số tùy chỉnh, mang lại sự linh hoạt đáng kinh ngạc cho các tác vụ lặp. Đặc biệt, việc Python hỗ trợ khối else cho vòng lặp for (khi vòng lặp hoàn thành mà không bị break) là một điểm nhấn thú vị, mở ra các kịch bản lập trình độc đáo.

Tôi hy vọng bài viết này đã cung cấp cho bạn những kiến thức sâu sắc và ý tưởng thú vị về cách làm việc hiệu quả với vòng lặp for.

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất