Đối với báo cáo vòng lặp
Python sử dụng vòng lặp for để lặp qua danh sách các phần tử. Không giống như C hoặc Java, sử dụng vòng lặp for để thay đổi giá trị theo từng bước và truy cập thứ gì đó chẳng hạn như mảng sử dụng giá trị đó.
Đối với các vòng lặp lặp qua các cấu trúc dữ liệu dựa trên bộ sưu tập như danh sách, bộ dữ liệu và từ điển.
Cú pháp cơ bản là:
for value in list_of_values:
# use value inside this block
Nói chung, bạn có thể sử dụng bất kỳ giá trị nào làm giá trị của trình lặp, nơi các mục nhập của trình lặp có thể được gán cho. Ví dụ: bạn có thể giải nén các bộ dữ liệu từ danh sách các bộ dữ liệu:
list_of_tuples = [(1,2), (3,4)]
for a, b in list_of_tuples:
print("a:", a, "b:", b)
Mặt khác, bạn có thể lặp lại bất kỳ thứ gì có thể lặp lại. Bạn có thể gọi một hàm hoặc sử dụng một danh sách theo nghĩa đen.
for person in load_persons():
print("The name is:", person.name)
for character in ["P", "y", "t", "h", "o", "n"]:
print("Give me a '{}'!".format(character))
Một số cách sử dụng vòng lặp For:
Lặp lại hàm range()
for i in range(10):
print(i)
Thay vì là một hàm, phạm vi thực sự là một loại chuỗi bất biến. Đầu ra sẽ chứa các kết quả từ giới hạn dưới tức là 0 đến giới hạn trên tức là 10 nhưng không bao gồm 10. Theo mặc định, giới hạn dưới hoặc chỉ mục bắt đầu được đặt thành 0. Đầu ra:
>
0
1
2
3
4
5
6
7
8
9
>
Ngoài ra, người ta có thể chỉ định giới hạn dưới của chuỗi và thậm chí cả bước của chuỗi bằng cách thêm tham số thứ hai và thứ ba.
for i in range(4,10,2): #From 4 to 9 using a step of two
print(i)
Đầu ra:
>
4
6
8
>
hàm xrange()
Đối với hầu hết các phần, xrange và range hoàn toàn giống nhau về chức năng. Cả hai đều cung cấp một cách để tạo danh sách các số nguyên để bạn sử dụng, tuy nhiên bạn muốn. Sự khác biệt duy nhất là phạm vi đó trả về một đối tượng danh sách Python và xrange trả về một đối tượng xrange. Điều đó có nghĩa là xrange không thực sự tạo danh sách tĩnh trong thời gian chạy như phạm vi. Nó tạo ra các giá trị khi bạn cần bằng một kỹ thuật đặc biệt gọi là năng suất. Kỹ thuật này được sử dụng với một loại đối tượng được gọi là trình tạo.
Một điều nữa để thêm. Trong Python 3.x, hàm xrange không còn tồn tại nữa. Hàm phạm vi hiện thực hiện những gì xrange thực hiện trong Python 2.x
Lặp lại các giá trị trong danh sách hoặc bộ dữ liệu
A = ["hello", 1, 65, "thank you", [2, 3]]
for value in A:
print(value)
Đầu ra:
>
hello
1
65
thank you
[2, 3]
>
Lặp lại các khóa trong từ điển (còn gọi là hashmap)
fruits_to_colors = {"apple": "#ff0000",
"lemon": "#ffff00",
"orange": "#ffa500"}
for key in fruits_to_colors:
print(key, fruits_to_colors[key])
Đầu ra:
>
apple #ff0000
lemon #ffff00
orange #ffa500
>
Lặp lại hai danh sách có cùng kích thước trong một vòng lặp với hàm zip()
A = ["a", "b", "c"]
B = ["a", "d", "e"]
for a, b in zip(A, B):
print a, b, a == b
Đầu ra:
>
a a True
b d False
c e False
>
Lặp lại một danh sách và lấy chỉ mục tương ứng với hàm enumerate()
A = ["this", "is", "something", "fun"]
for index,word in enumerate(A):
print(index, word)
Đầu ra:
>
0 this
1 is
2 something
3 fun
>
Một trường hợp sử dụng phổ biến là lặp qua từ điển:
for name, phonenumber in contacts.items():
print(name, "is reachable under", phonenumber)
Nếu bạn thực sự cần truy cập vào chỉ mục hiện tại của lần lặp lại, hãy làm KHÔNG PHẢI sử dụng range(len(iterable))
! Đây là một cách thực hành cực kỳ tồi tệ và sẽ khiến bạn nhận được nhiều tiếng cười khúc khích từ các nhà phát triển Python cấp cao. Sử dụng chức năng tích hợp enumerate()
thay thế:
for index, item in enumerate(shopping_basket):
print("Item", index, "is a", item)
câu lệnh for/else
Pyhton cho phép bạn sử dụng else với vòng lặp for, trường hợp else được thực thi khi không có điều kiện nào trong thân vòng lặp được thỏa mãn. Để sử dụng cái khác, chúng ta phải sử dụng break
câu lệnh để chúng ta có thể thoát ra khỏi vòng lặp với điều kiện đã thỏa mãn. Nếu chúng ta không thoát ra thì phần khác sẽ được thực hiện.
week_days = ['Monday','Tuesday','Wednesday','Thursday','Friday']
today = 'Saturday'
for day in week_days:
if day == today:
print('today is a week day')
break
else:
print('today is not a week day')
Trong trường hợp trên, đầu ra sẽ là today is not a week day
vì ngắt trong vòng lặp sẽ không bao giờ được thực thi.
Lặp lại danh sách bằng chức năng vòng lặp nội tuyến
Chúng tôi cũng có thể lặp lại nội tuyến bằng python, ví dụ: nếu chúng tôi cần viết hoa tất cả các từ trong danh sách từ danh sách, chúng tôi chỉ cần thực hiện như sau:
A = ["this", "is", "awesome", "shinning", "star"]
UPPERCASE = [word.upper() for word in A]
print (UPPERCASE)
Đầu ra:
>
['THIS', 'IS', 'AWESOME', 'SHINNING', 'STAR']
>