Đây là cách bạn có thể truy cập các chỉ số và các yếu tố của mảng bằng các vòng lặp cho trong.
1. Các phần tử lặp với toán tử bộ đếm và items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
0.
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
items = [8, 23, 45, 12, 78]
counter = 0
for value in items:
print[counter, value]
counter += 1
Result:
# 0 8
# 1 23
# 2 45
# 3 12
# 4 78
2. Các phần tử lặp bằng phương pháp items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
1.
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
items = [8, 23, 45, 12, 78]
for i in enumerate[items]:
print["index/value", i]
Result:
# index/value [0, 8]
# index/value [1, 23]
# index/value [2, 45]
# index/value [3, 12]
# index/value [4, 78]
3. Sử dụng riêng biệt items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
2 và items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
3.
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
Result:
# index 0 for value 8
# index 1 for value 23
# index 2 for value 45
# index 3 for value 12
# index 4 for value 78
4. Bạn có thể thay đổi số items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
2 thành bất kỳ mức tăng nào.
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
Result:
# 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
5. Tăng phản ứng tự động với items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
5.
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
items = [8, 23, 45, 12, 78]
for i in range[len[items]]:
print["Index:", i, "Value:", items[i]]
Result:
# ['Index:', 0, 'Value:', 8]
# ['Index:', 1, 'Value:', 23]
# ['Index:', 2, 'Value:', 45]
# ['Index:', 3, 'Value:', 12]
# ['Index:', 4, 'Value:', 78]
6. Sử dụng vòng lặp for-in bên trong chức năng.
# 0 8
# 1 23
# 2 45
# 3 12
# 4 78
0Result:
# 0 8
# 1 23
# 2 45
# 3 12
# 4 78
7. Tất nhiên, chúng ta không thể quên vòng lặp items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
6.
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
# 0 8
# 1 23
# 2 45
# 3 12
# 4 78
2Result:
# 0 8
# 1 23
# 2 45
# 3 12
# 4 78
8. Tuyên bố items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
7 Trả về một đối tượng máy phát.
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
# 0 8
# 1 23
# 2 45
# 3 12
# 4 78
4Result:
# 0 8
# 1 23
# 2 45
# 3 12
# 4 78
59. Biểu thức nội tuyến với vòng lặp và items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
8.
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
# 0 8
# 1 23
# 2 45
# 3 12
# 4 78
6Result:
# 0 8
# 1 23
# 2 45
# 3 12
# 4 78
7 Nếu bạn chuyển đến Python từ C hoặc Java, bạn có thể bị nhầm lẫn bởi các vòng lặp Python, ____49. Python không thực sự có các vòng lặp, ít nhất không phải là loại vòng lặp
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
9 mà các ngôn ngữ dựa trên C có. Python sườn items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
9 vòng lặp thực sự là các vòng lặp.Python doesn’t actually have for loops… at least not the same kind of items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
9 loop that C-based languages have. Python’s items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
9 loops are actually foreach loops.Trong bài viết này, tôi sẽ so sánh các vòng lặp Python từ ____49 với các ngôn ngữ khác và thảo luận về những cách thông thường, chúng tôi giải quyết các vấn đề phổ biến với các vòng lặp
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
9 trong Python.Đối với các vòng trong các ngôn ngữ khác
Trước khi chúng ta nhìn vào các vòng lặp Python, hãy để Lôi xem một vòng lặp trong JavaScript:
8 | 9 |
Vòng lặp JavaScript này trông gần giống nhau trong C/C ++ và Java.
Trong vòng lặp này, chúng tôi:
- Đặt một biến bộ đếm
4 thành 0# index 0 for value 8 # index 1 for value 23 # index 2 for value 45 # index 3 for value 12 # index 4 for value 78
- Kiểm tra xem bộ đếm có nhỏ hơn chiều dài mảng không
- Thực thi mã trong vòng lặp hoặc thoát vòng lặp nếu bộ đếm quá cao
- Tăng biến bộ đếm thêm 1
Vòng lặp trong Python
Bây giờ, hãy để nói về các vòng lặp trong Python. Đầu tiên, chúng tôi sẽ nhìn vào hai phương pháp lặp quen thuộc hơn một chút và sau đó chúng tôi sẽ xem xét cách thành ngữ để lặp trong Python.
while
Nếu chúng tôi muốn bắt chước hành vi của vòng lặp
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
9 kiểu C truyền thống của chúng tôi trong Python, chúng tôi có thể sử dụng vòng lặp items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
6:
0 | 1 |
Điều này liên quan đến 4 bước giống như các vòng lặp
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
9 trong các ngôn ngữ khác [lưu ý rằng chúng tôi cài đặt, kiểm tra và tăng # index 0 for value 8
# index 1 for value 23
# index 2 for value 45
# index 3 for value 12
# index 4 for value 78
4] nhưng nó không hoàn toàn nhỏ gọn.Phương pháp lặp này trong Python là rất hiếm.
phạm vi chiều dài
Tôi thường thấy các lập trình viên Python mới cố gắng tạo lại các vòng
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
9 truyền thống theo kiểu sáng tạo hơn một chút trong Python:
2 | 3 |
Điều này đầu tiên tạo ra một phạm vi tương ứng với các chỉ mục trong danh sách của chúng tôi [
items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
0 đến items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
1]. Chúng ta có thể lặp qua phạm vi này bằng cách sử dụng vòng lặp Python từ For-in [thực sự là một foreach].Điều này cung cấp cho chúng tôi chỉ số của từng mục trong danh sách
items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
2 của chúng tôi, đây giống như cách mà các vòng lặp items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
9 kiểu C của chúng tôi hoạt động. Để có được màu thực tế, chúng tôi sử dụng items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
4.for-in: cách thông thường
Cả hai phương thức vòng lặp và các phương thức phạm vi đều dựa vào việc lặp qua các chỉ mục. Nhưng chúng tôi không thực sự quan tâm đến các chỉ mục: Chúng tôi chỉ sử dụng các chỉ mục này cho mục đích lấy các yếu tố từ danh sách của chúng tôi.
Bởi vì chúng tôi không thực sự quan tâm đến các chỉ mục trong vòng lặp của chúng tôi, nên có một phương pháp lặp đơn giản hơn nhiều mà chúng tôi có thể sử dụng:a much simpler method of looping we can use:
2 | 3 |
Điều này đầu tiên tạo ra một phạm vi tương ứng với các chỉ mục trong danh sách của chúng tôi [
items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
0 đến items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
1]. Chúng ta có thể lặp qua phạm vi này bằng cách sử dụng vòng lặp Python từ For-in [thực sự là một foreach].Điều này cung cấp cho chúng tôi chỉ số của từng mục trong danh sách
items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
2 của chúng tôi, đây giống như cách mà các vòng lặp items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
9 kiểu C của chúng tôi hoạt động. Để có được màu thực tế, chúng tôi sử dụng items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
4.for-in: cách thông thường
Cả hai phương thức vòng lặp và các phương thức phạm vi đều dựa vào việc lặp qua các chỉ mục. Nhưng chúng tôi không thực sự quan tâm đến các chỉ mục: Chúng tôi chỉ sử dụng các chỉ mục này cho mục đích lấy các yếu tố từ danh sách của chúng tôi.
phạm vi chiều dài
Tôi thường thấy các lập trình viên Python mới cố gắng tạo lại các vòng
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
9 truyền thống theo kiểu sáng tạo hơn một chút trong Python:
2 | 3 |
Điều này đầu tiên tạo ra một phạm vi tương ứng với các chỉ mục trong danh sách của chúng tôi [
items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
0 đến items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
1]. Chúng ta có thể lặp qua phạm vi này bằng cách sử dụng vòng lặp Python từ For-in [thực sự là một foreach].Điều này cung cấp cho chúng tôi chỉ số của từng mục trong danh sách items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
2 của chúng tôi, đây giống như cách mà các vòng lặp items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
9 kiểu C của chúng tôi hoạt động. Để có được màu thực tế, chúng tôi sử dụng items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
4.
items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
items = [8, 23, 45, 12, 78]
for index, value in enumerate[items]:
print["index", index, "for value", value]
items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
for-in: cách thông thường
2 | 9 |
Hàm
items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
6 cung cấp cho chúng ta một điều đáng tin cậy trong đó mỗi phần tử là một tuple chứa chỉ mục của mục và giá trị mục gốc.Hàm này có nghĩa là để giải quyết nhiệm vụ của:
- Truy cập từng mục trong danh sách [hoặc một thứ khác]
- Cũng nhận được chỉ mục của từng mục được truy cập
Vì vậy, bất cứ khi nào chúng ta cần các chỉ mục vật phẩm trong khi lặp, chúng ta nên nghĩ về
items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
6.Lưu ý: Tùy chọn
0 cho # 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
6 ở đây là tùy chọn. Nếu chúng tôi không chỉ định điều này, chúng tôi sẽ bắt đầu đếm tại items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
0 theo mặc định.: the items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
# 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
0 option to items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
6 here
is optional. If we didn’t specify this, we’d start counting at items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
0 by default.Điều gì sẽ xảy ra nếu chúng ta cần lặp lại nhiều thứ?
Thông thường khi chúng tôi sử dụng các chỉ mục danh sách, nó sẽ tìm kiếm một cái gì đó trong một danh sách khác.
liệt kê
Ví dụ, ở đây, chúng tôi lặp lại qua hai danh sách cùng một lúc bằng cách sử dụng các chỉ mục để tra cứu các yếu tố tương ứng:
0 | 1 |
Lưu ý rằng chúng tôi chỉ cần chỉ mục trong kịch bản này vì chúng tôi sử dụng nó để tra cứu các yếu tố ở cùng một chỉ mục trong danh sách thứ hai của chúng tôi. Những gì chúng tôi thực sự muốn là lặp lại đồng thời hai danh sách: các chỉ mục chỉ cung cấp một phương tiện để làm điều đó.
zip
Chúng tôi không thực sự quan tâm đến chỉ số khi lặp ở đây. Mục tiêu thực sự của chúng tôi là lặp qua hai danh sách cùng một lúc. Nhu cầu này là đủ phổ biến để có một chức năng tích hợp đặc biệt chỉ cho việc này.
Chức năng Python sườn ____ ____73 cho phép chúng tôi lặp qua nhiều danh sách cùng một lúc:loop over multiple lists at the same time:
8 | 3 |
Hàm
# 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
3 có nhiều danh sách và trả về một số lượng khác cung cấp một bộ phận của các phần tử tương ứng của mỗi danh sách khi chúng tôi lặp qua nó.Lưu ý rằng
# 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
3 với các danh sách kích thước khác nhau sẽ dừng sau khi danh sách ngắn nhất hết các mục. Bạn có thể muốn xem xét itertools.zip_longest nếu bạn cần hành vi khác. Cũng lưu ý rằng # 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
3 trong Python 2 trả về một danh sách nhưng # 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
3 trong Python 3 trả về một sự lười biếng. Trong Python 2, # 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
8 tương đương với hàm Python 3 # 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
3 mới hơn.Vòng lặp gian lận
Ở đây, một tấm cheat lặp rất ngắn có thể giúp bạn nhớ cấu trúc ưa thích cho mỗi trong ba kịch bản vòng lặp này.
Vòng lặp qua một danh sách duy nhất với một danh sách thông thường:
4 | 5 |
Vòng lặp qua nhiều danh sách cùng một lúc với
# 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
3:
4 | 5 |
Vòng lặp qua nhiều danh sách cùng một lúc với
# 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
3:
4 | 5 |
Vòng lặp qua nhiều danh sách cùng một lúc với # 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
3:
# 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
# index/value [0, 8]
# index/value [1, 23]
# index/value [2, 45]
# index/value [3, 12]
# index/value [4, 78]
7Vòng lặp qua danh sách trong khi theo dõi các chỉ mục với
items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
6:
9# index/value [0, 8] # index/value [1, 23] # index/value [2, 45] # index/value [3, 12] # index/value [4, 78]
- Tóm tắt
- Nếu bạn thấy mình bị cám dỗ sử dụng
2 hoặc bộ đếm vòng lặp, hãy nghĩ về việc bạn có thể điều chỉnh lại vấn đề của mình để cho phép sử dụngitems = [8, 23, 45, 12, 78] for i in range[len[items]]: print["Index:", i, "Value:", items[i]]
3 hoặc# 1000 8 # 1001 23 # 1002 45 # 1003 12 # 1004 78
6 [hoặc kết hợp cả hai].items = [8, 23, 45, 12, 78] for i, value in enumerate[items, start=1000]: print[i, value]
Trên thực tế, nếu bạn thấy mình đạt được
items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
6, hãy nghĩ về việc bạn có thực sự cần chỉ số không. Nó rất hiếm khi cần các chỉ số trong Python.Nếu bạn cần lặp qua nhiều danh sách cùng một lúc, hãy sử dụng # 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
3
# 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
Nếu bạn chỉ cần lặp qua một danh sách duy nhất, chỉ cần sử dụng vòng lặp for-in
Nếu bạn cần lặp qua danh sách và bạn cần chỉ mục mục, hãy sử dụng
items = [8, 23, 45, 12, 78]
for i, value in enumerate[items, start=1000]:
print[i, value]
6Nếu bạn thấy mình đang vật lộn để tìm ra cách tốt nhất để lặp, hãy thử sử dụng bảng cheat ở trên.get hands-on experience practicing Python every week, I have a Python skill-building service you should consider joining. If you sign up for Python Morsels I’ll give you a Python looping exercise that right now and then I’ll send you one new Python exercise every week after that.
Tập luyện giúp hoàn hảo hơnsign up for Python Morsels, get some practice with the
3 function, and start leveling-up your Python skills every week.# 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78