Thứ năm, 12/01/2017 | 00:00 GMT+7

Cách tạo các vòng lặp trong Python 3


Sử dụng vòng lặp trong lập trình máy tính cho phép ta tự động hóa và lặp lại các việc tương tự nhiều lần. Trong hướng dẫn này, ta sẽ trình bày về vòng lặp for của Python.

Vòng lặp for thực hiện việc lặp lại mã dựa trên bộ đếm vòng lặp hoặc biến vòng lặp. Điều này nghĩa là vòng lặp for được sử dụng thường xuyên nhất khi biết số lần lặp trước khi vào vòng lặp, không giống như vòng lặp while dựa trên điều kiện.

Đối với các vòng lặp

Trong Python, các vòng lặp for được xây dựng như vậy:

for [iterating variable] in [sequence]:
    [do something]

Điều gì đó đang được thực hiện sẽ được thực hiện cho đến khi trình tự kết thúc.

Hãy xem một vòng lặp for lặp qua một loạt các giá trị:

for i in range(0,5):
   print(i)

Khi ta chạy chương trình này, kết quả sẽ như thế này:

Output
0 1 2 3 4

Vòng lặp for này cài đặt i làm biến lặp của nó và chuỗi tồn tại trong phạm vi từ 0 đến 5.

Sau đó, trong vòng lặp, ta in ra một số nguyên cho mỗi lần lặp vòng lặp. Lưu ý trong lập trình, ta có xu hướng bắt đầu ở chỉ số 0, đó là lý do tại sao mặc dù 5 số được in ra, chúng nằm trong repository ảng từ 0-4.

Bạn sẽ thường thấy và sử dụng vòng lặp for khi một chương trình cần lặp lại một khối mã nhiều lần.

Đối với các vòng lặp sử dụng dải ô ()

Một trong những kiểu chuỗi bất biến được tích hợp sẵn của Python là range() . Trong các vòng lặp, range() được sử dụng để kiểm soát số lần lặp lại của vòng lặp.

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

  • start cho biết giá trị số nguyên mà tại đó chuỗi bắt đầu, nếu giá trị này không được bao gồm thì start bắt đầu từ 0
  • stop luôn là bắt buộc và là số nguyên được tính đến nhưng không bao gồm
  • step đặt số lượng để tăng (hoặc giảm trong trường hợp số âm) trong lần lặp tiếp theo, nếu điều này bị bỏ qua thì step mặc định là 1

Ta sẽ xem xét một số ví dụ về việc truyền các đối số khác nhau cho range() .

Đầu tiên, hãy chỉ chuyển đối số stop để trình tự của ta được cài đặt là range(stop) :

for i in range(6):
   print(i)

Trong chương trình trên, đối số stop là 6, vì vậy mã sẽ lặp lại từ 0-6 (không bao gồm 6):

Output
0 1 2 3 4 5

Tiếp theo, ta sẽ xem xét range(start, stop) , với các giá trị được truyền cho thời điểm bắt đầu lặp lại và khi nào thì dừng:

for i in range(20,25):
   print(i)

Ở đây, phạm vi đi từ 20 (bao gồm) đến 25 (độc quyền), vì vậy kết quả trông giống như sau:

Output
20 21 22 23 24

Đối số step của range() tương tự như chỉ định bước trong khi cắt chuỗi ở chỗ nó được dùng để bỏ qua các giá trị trong chuỗi.

Với cả ba đối số, step xuất hiện ở vị trí cuối cùng: range(start, stop, step) . Đầu tiên, hãy sử dụng một step có giá trị dương:

for i in range(0,15,3):
   print(i)

Trong trường hợp này, vòng lặp for được cài đặt để các số từ 0 đến 15 được in ra, nhưng ở step 3, để chỉ mỗi số thứ ba được in, như sau:

Output
0 3 6 9 12

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

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

Ở đây, 100 là giá trị start , 0 là giá trị stop-10 là phạm vi, do đó, 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. Ta có thể thấy điều này xảy ra trong kết quả :

Output
100 90 80 70 60 50 40 30 20 10

Khi lập trình bằng Python, vòng lặp for thường sử dụng kiểu chuỗi range() làm tham số của nó để lặp lại.

Đối với vòng lặp sử dụng kiểu dữ liệu tuần tự

Danh sách và các kiểu chuỗi dữ liệu khác cũng 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ể xác định một danh sách và lặp qua danh sách đó.

Ta sẽ gán một danh sách cho một biến, sau đó lặp lại qua danh sách:

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

for shark in sharks:
   print(shark)

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

Output
hammerhead great white dogfish frilled bullhead requiem

Kết quả ở trên cho thấy rằng vòng lặp for lặp lại qua danh sách và in từng mục từ danh sách trên mỗi dòng.

Danh sách và các kiểu dữ liệu dựa trên trình tự khác như chuỗibộ dữ liệu thường được sử dụng với các vòng lặp vì chúng có thể lặp lại. 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 danh sách, ví dụ:

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']

Ở đây, ta đã thêm một chuỗi giữ chỗ 'shark' cho mỗi mục có độ dài của danh sách sharks .

Bạn cũng có thể sử dụng vòng lặp for để tạo danh sách từ đầu:

integers = []

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

print(integers)

Trong ví dụ này, các integers trong danh sách được khởi tạo trống, nhưng vòng lặp for điền danh sách như sau:

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

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

sammy = 'Sammy'

for letter in sammy:
   print(letter)
Output
S a m m y

Việc lặp lại qua các bộ giá trị được thực hiện theo cùng một định dạng như lặp qua các danh sách hoặc chuỗi ở trên.

Khi duyệt qua một từ điển , đ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 từ điển. Đây là một ví dụ gọi cả khóa và giá trị:

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 từ điển với vòng lặp for , biến lặp tương ứng với các khóa của từ điển và dictionary_variable[iterating_variable] tương ứng với các giá trị. Trong trường hợp trên, key biến lặp được sử dụng để đại diện cho khóa và sammy_shark[key] được sử dụng để đại diện cho các giá trị.

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

Lồng nhau cho các vòng lặp

Các vòng lặp có thể được lồng trong Python, như chúng có thể với các ngôn ngữ lập trình khác.

Vòng lặp lồng nhau là một vòng lặp xảy ra trong một vòng lặp khác, có cấu trúc tương tự như các câu lệnh if lồng nhau . Chúng được xây dựng như vậy:

for [first iterating variable] in [outer loop]: # Outer loop
    [do something]  # Optional
    for [second iterating variable] in [nested loop]:   # Nested loop
        [do something]  

Chương trình lần đầu tiên gặp vòng lặp bên ngoài, thực hiện lần lặp đầu tiên. Lần lặp đầu tiên này kích hoạt vòng lặp lồng nhau bên trong, vòng lặp này sau đó chạy đến khi hoàn thành. Sau đó, chương trình quay trở lại phần trên cùng của vòng lặp ngoài, hoàn thành lần lặp thứ hai và kích hoạt vòng lặp lồng nhau. , vòng lặp lồng nhau chạy đến khi hoàn thành và chương trình quay trở lại đầu vòng lặp ngoài cho đến khi trình tự hoàn tất hoặc một lệnh ngắt hoặc câu lệnh khác làm gián đoạn quá trình.

Hãy triển khai vòng lặp for lồng nhau để ta có thể xem xét kỹ hơn. Trong ví dụ này, vòng lặp bên ngoài sẽ lặp qua danh sách các số nguyên được gọi là num_list và vòng lặp bên trong sẽ lặp qua danh sách các chuỗi được gọi là alpha_list .

num_list = [1, 2, 3]
alpha_list = ['a', 'b', 'c']

for number in num_list:
    print(number)
    for letter in alpha_list:
        print(letter)

Khi ta chạy chương trình này, ta sẽ nhận được kết quả sau:

Output
1 a b c 2 a b c 3 a b c

Đầu ra minh họa rằng chương trình hoàn thành lần lặp đầu tiên của vòng lặp ngoài bằng cách in 1 , sau đó kích hoạt hoàn thành vòng lặp bên trong, in a , b , c liên tiếp. Sau khi hoàn thành vòng lặp bên trong, chương trình quay lại đầu vòng lặp ngoài, in 2 , sau đó in lại toàn bộ vòng lặp bên trong ( a , b , c ), v.v.

Các vòng lặp for lồng nhau có thể hữu ích để lặp qua các mục trong danh sách bao gồm danh sách. Trong danh sách bao gồm các danh sách, nếu ta chỉ sử dụng một vòng lặp for , chương trình sẽ xuất ra từng danh sách nội bộ dưới dạng một mục:

list_of_lists = [['hammerhead', 'great white', 'dogfish'],[0, 1, 2],[9.9, 8.8, 7.7]]

for list in list_of_lists:
    print(list)
Output
['hammerhead', 'great white', 'dogfish'] [0, 1, 2] [9.9, 8.8, 7.7]

Để truy cập từng mục riêng lẻ của danh sách nội bộ, ta sẽ triển khai vòng lặp for lồng nhau:

list_of_lists = [['hammerhead', 'great white', 'dogfish'],[0, 1, 2],[9.9, 8.8, 7.7]]

for list in list_of_lists:
    for item in list:
        print(item)
Output
hammerhead great white dogfish 0 1 2 9.9 8.8 7.7

Khi ta sử dụng vòng lặp for lồng nhau, ta có thể lặp lại các mục riêng lẻ có trong danh sách.

Ta có thể thấy các vòng lặp for lồng nhau đang hoạt động được sử dụng trong một chương trình làm việc trong hướng dẫn của ta về Bộ công cụ xử lý ngôn ngữ tự nhiên (NLTK) .

Kết luận

Hướng dẫn này đã đi qua như thế nào for vòng làm việc bằng Python và làm thế nào để xây dựng chúng. Vòng lặp for tiếp tục lặp lại qua một khối mã được cung cấp một số lần nhất định.

Từ đây, bạn có thể tiếp tục tìm hiểu về vòng lặp bằng cách đọc các hướng dẫn về vòng lặp whilecác câu lệnh break, continue và pass .

Để làm việc với vòng lặp for trong các dự án, hãy làm theo các hướng dẫn sau:


Tags:

Các tin liên quan

Hiểu toàn bộ danh sách trong Python 3
2017-01-12
Cách sử dụng các câu lệnh Break, Continue và Pass khi làm việc với các vòng lặp trong Python 3
2017-01-06
Cách tạo vòng lặp While trong Python 3
2017-01-05
Cách làm việc với dữ liệu ngôn ngữ trong Python 3 bằng Bộ công cụ ngôn ngữ tự nhiên (NLTK)
2017-01-03
Cách tạo Twitterbot bằng Python 3 và Thư viện Tweepy
2016-11-30
Cách tạo ứng dụng Twitter bằng Python
2016-11-23
Cách tạo ứng dụng Twitter bằng Python
2016-11-23
Hiểu Logic Boolean trong Python 3
2016-11-17
Cách tạo chương trình máy tính bằng Python 3
2016-11-16
Cách tạo chương trình máy tính bằng Python 3
2016-11-16