Python vòng lặp lồng nhau
Vòng lặp là một mẫu lập trình phổ biến trong Python. Với một vòng lặp, bạn có thể lặp lại mã mà không cần nỗ lực thủ công. Ví dụ: bạn có thể sử dụng vòng lặp để duyệt qua danh sách tên và sắp xếp chúng. Đôi khi, bạn có thể cần đặt một vòng lặp bên trong một vòng lặp khác. Đây được gọi là vòng lặp lồng nhau trong lập trình Show
Mặc dù không có gì đặc biệt về các vòng lặp lồng nhau, nhưng khi mới bắt đầu, chúng có vẻ hơi đáng sợ hoặc dài dòng. Đây là hướng dẫn toàn diện về các vòng lặp lồng nhau trong Python. Bạn sẽ học cách xây dựng các vòng lặp lồng nhau, thoát khỏi chúng, chuyển giữa các vòng lặp, v.v. Tất cả các lý thuyết được sao lưu với các ví dụ minh họa tuyệt vời Vòng lặp lồng nhau trong Python là gì?Thuật ngữ “nested” thường được sử dụng trong lập trình Theo định nghĩa, từ “lồng nhau” có nghĩa là có một đối tượng được đặt bên trong một đối tượng khác cùng loại Trong Python, bạn có thể đặt bất kỳ mã hợp lệ nào bên trong một vòng lặp. Nó thậm chí có thể là một vòng lặp khác Vòng lặp nằm bên trong vòng lặp được gọi là vòng lặp lồng nhau. Lưu ý rằng vòng lặp lồng nhau không phải là khái niệm chỉ dành cho Python. Các vòng lặp lồng nhau có mặt trong tất cả các ngôn ngữ lập trình khác, vì vậy thuật ngữ này rất tốt để học Vòng lặp lồng nhau hoạt động như thế nào trong Python?Không có giới hạn về số lượng vòng lặp bạn có thể đặt bên trong một vòng lặp Để minh họa cách thức hoạt động của một vòng lặp lồng nhau, hãy mô tả một vòng lặp lồng nhau gồm hai vòng lặp. Một vòng lặp bên ngoài và một vòng lặp bên trong Đây là cú pháp chung của một vòng lặp for lồng nhau trông như thế nào for element in sequence1: for element in sequence2: # inner loop body here # outer loop body here Mỗi lần lặp của vòng lặp bên ngoài làm cho vòng lặp bên trong chạy tất cả các lần lặp của nó. Vòng lặp bên ngoài không chạy trước khi vòng lặp bên trong kết thúc Làm rõ. Các vòng lặp lồng nhau không chỉ dành cho các vòng lặp. Bạn có thể đặt vòng lặp while bên trong vòng lặp while, vòng lặp while bên trong vòng lặp for, v.v. Vòng lặp lồng nhau là vòng lặp có ít nhất một vòng lặp bên trong nó Một tình huống điển hình để sử dụng vòng lặp lồng nhau là khi làm việc với dữ liệu đa chiều, chẳng hạn như danh sách các danh sách hoặc những thứ tương tự. Hãy xem một số ví dụ đơn giản về vòng lặp lồng nhau ví dụ 1. Vòng lặp lồng nhauHãy sử dụng vòng lặp for lồng nhau để in bảng cửu chương của 10 số đầu tiên for i in range(1, 11): for j in range(1, 11): print(i * j, end=" ") print() đầu ra 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 Chúng ta hãy xem xét kỹ hơn cách thức hoạt động của chương trình này
Nhân tiện, nếu bạn muốn định dạng phép nhân một cách độc đáo để các số thẳng hàng trong mỗi cột, bạn có thể chuyển đổi kết quả phép nhân thành một chuỗi và sử dụng phương pháp để buộc chiều rộng giống nhau Đây là giao diện của nó trong mã for i in range(1, 11): for j in range(1, 11): print(f"{i * j}".ljust(3), end=" ") print() đầu ra 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 ví dụ 2. Vòng lặp While lồng nhauĐể hoàn thiện, hãy lặp lại ví dụ trên bằng cách sử dụng vòng lặp while lồng nhau. Mục đích của ví dụ này là để chứng minh rằng bạn cũng có thể đặt một vòng lặp while bên trong một vòng lặp khác Đây là mã i = 1 j = 1 while i <= 10: while j <= 10: print(i * j, end = " ") j += 1 j = 1 print() i += 1 đầu ra 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 Dưới đây là hình minh họa các phần của vòng lặp lồng nhau ở trên Làm cách nào để kiểm soát luồng của vòng lặp lồng nhau?Trong Python, bạn có thể điều khiển luồng hoặc vòng lặp. Hai câu lệnh luồng điều khiển chính trong Python là
Hãy xem xét kỹ hơn cách các câu lệnh này hoạt động với các vòng lặp lồng nhau trong Python Làm thế nào để phá vỡ một vòng lặp lồng nhau?Trong Python, bạn có thể sử dụng câu lệnh break để thoát khỏi vòng lặp. Điều này hữu ích nếu không có lý do gì để tiếp tục lặp. Ví dụ: nếu bạn đang sử dụng vòng lặp để tìm giá trị mục tiêu, thì khi tìm thấy mục tiêu, vòng lặp sẽ dừng lại Hãy xem một ví dụ đơn giản về hoạt động của câu lệnh break target = 3 for number in range(10): print(number) if number == target: break đầu ra ________số 8Tại đây, vòng lặp kết thúc khi số lần lặp là 3, là số mục tiêu Trong một vòng lặp lồng nhau, câu lệnh break thoát khỏi vòng lặp bên trong nhưng vẫn tiếp tục chạy vòng lặp bên ngoài. Vì vậy, nếu bạn gọi câu lệnh break trong vòng lặp bên trong của cấu trúc vòng lặp lồng nhau, nó sẽ không dừng toàn bộ vòng lặp mà chỉ dừng vòng lặp bên trong Chẳng hạn, hãy in một nửa hình chóp gồm các dấu hoa thị sao cho số dấu hoa thị là số hàng trong hình được đọc từ trên xuống dưới for i in range(1, 11): for j in range(1, 11): if j - i > 0: break print("*", end=" ") print() đầu ra for i in range(1, 11): for j in range(1, 11): print(i * j, end=" ") print()0 Trong một vòng lặp lồng nhau như thế này, bạn có thể coi i là số hàng và j là số cột Ở đây câu lệnh break thoát khỏi vòng lặp bên trong nếu j – i nhỏ hơn 0. Nói cách khác, bạn ngừng chạy vòng lặp bên trong nếu số sao (*) lớn hơn số hàng Đọc thêm về cách kiểm soát luồng của vòng lặp bằng cách sử dụng Làm cách nào để tiếp tục một vòng lặp lồng nhau?Trong Python, câu lệnh continue cho phép bạn bỏ qua “phần còn lại” của vòng lặp và bắt đầu vòng lặp tiếp theo Câu lệnh này không kết thúc toàn bộ vòng lặp mà chỉ kết thúc vòng lặp hiện tại. Câu lệnh continue rất hữu ích nếu không có lý do gì để tiếp tục lặp lại vòng lặp hiện tại. Ví dụ: nếu bạn chỉ muốn thực hiện các hành động dựa trên một điều kiện, bạn có thể sử dụng câu lệnh tiếp tục để bỏ qua các hành động Bạn có thể sử dụng câu lệnh continue trong một vòng lặp lồng nhau giống như bạn sẽ sử dụng nó trên một vòng lặp đơn
Chẳng hạn, hãy in một nửa kim tự tháp đảo ngược gồm các dấu sao sao cho số dấu hoa thị là số hàng trong hình được đọc từ dưới lên trên for i in range(1, 11): for j in range(1, 11): print(i * j, end=" ") print()1 đầu ra for i in range(1, 11): for j in range(1, 11): print(i * j, end=" ") print()2 Ở đây câu lệnh continue chuyển vòng lặp bên trong sang lần lặp tiếp theo nếu i + j lớn hơn 11. Nói cách khác, vòng lặp bên trong bỏ qua việc in dấu sao (*) nếu số hàng cộng với số cột lớn hơn 11 Dù sao, vấn đề là chứng minh cách hoạt động của câu lệnh continue trong một vòng lặp lồng nhau hơn là tập trung vào các chi tiết của hình dạng. Tuy nhiên, vui lòng chơi với ví dụ trong trình chỉnh sửa mã của bạn Các vòng lặp lồng nhau một lớp với khả năng hiểu danh sáchTrong Python, bạn có thể làm cho vòng lặp for nhỏ gọn hơn bằng cách sử dụng. Điều này cho phép biểu thức một dòng gọn gàng hơn là mở rộng vòng lặp trên nhiều dòng mã Tương tự như cách bạn có thể tạo vòng lặp for lồng nhau, bạn có thể tạo cách hiểu danh sách lồng nhau Việc nén các vòng lặp bằng cách sử dụng khả năng hiểu có hợp lý hay không vẫn còn là vấn đề tranh luận. Một số người cho rằng nó làm cho mã gọn hơn và dễ đọc hơn. Những người khác nói rằng nó chỉ làm cho mã phức tạp hơn. Nếu bạn tạo một cách hiểu danh sách lồng nhau, hãy cẩn thận. Chất lượng mã có thể bị ảnh hưởng do biểu thức dài dòng và không thể đọc được. Đảm bảo chỉ thực hiện việc hiểu danh sách nếu nó cải thiện chất lượng mã for i in range(1, 11): for j in range(1, 11): print(i * j, end=" ") print()3 đầu ra for i in range(1, 11): for j in range(1, 11): print(i * j, end=" ") print()4 Làm cách nào để biến vòng lặp lồng nhau thành hiểu danh sách?Trong phần trước, bạn đã thấy một ví dụ về cách tạo một danh sách lồng nhau từ một vòng lặp for lồng nhau. Nhưng từ ví dụ trên, không rõ bạn thực sự làm điều đó như thế nào Đây là kế hoạch chi tiết để tạo khả năng hiểu danh sách lồng nhau từ các vòng lặp for lồng nhau for i in range(1, 11): for j in range(1, 11): print(i * j, end=" ") print()5 Thứ tự hiểu có thể làm bạn bối rối vì vòng lặp bên ngoài xảy ra ở “phần bên trong” của việc hiểu và vòng lặp bên trong nằm ở “phần bên ngoài”. Ngoài ra, không có nhiều điều xảy ra trong quá trình chuyển đổi Tuy nhiên, nếu bạn không quen với việc hiểu danh sách, bạn nên đọc một bài viết riêng về chủ đề này Ví dụ: đây là minh họa chuyển đổi vòng lặp for lồng nhau thành cách hiểu danh sách lồng nhau Tóm lượcHôm nay bạn đã học cách vòng lặp lồng nhau hoạt động trong Python Về nhà, một vòng lặp lồng nhau đề cập đến một vòng lặp bên trong một vòng lặp. Có thể có bao nhiêu vòng lặp trong một vòng lặp tùy thích Các vòng lặp lồng nhau thường thực tế khi làm việc với dữ liệu đa chiều, chẳng hạn như danh sách các danh sách hoặc bảng dữ liệu Như một tốc ký, bạn có thể nén các vòng lặp lồng nhau thành cách hiểu danh sách lồng nhau. Hãy cẩn thận khi làm điều này để không làm cho mã khó đọc hơn Vòng lặp lồng nhau trong Python là gì?Trả lời 1. Một vòng lặp lồng nhau đề cập đến một vòng lặp bên trong một vòng lặp, một vòng lặp bên trong phần thân của một vòng lặp bên ngoài . Hơn nữa, lần vượt qua đầu tiên của vòng lặp bên ngoài sẽ kích hoạt vòng lặp bên trong, vòng lặp này sẽ thực thi cho đến khi hoàn thành. Sau đó, lần thứ hai của vòng lặp bên ngoài sẽ kích hoạt lại vòng lặp bên trong.
Vòng lặp lồng nhau với ví dụ là gì?Nếu một vòng lặp tồn tại bên trong phần thân của một vòng lặp khác thì đó được gọi là vòng lặp lồng nhau. Đây là một ví dụ về vòng lặp for lồng nhau. // vòng lặp ngoài for (int i = 1; i
Vòng lặp lồng nhau được sử dụng ở đâu?Một vòng lặp lồng nhau có một vòng lặp bên trong vòng lặp khác. Chúng thường được sử dụng để làm việc với hai chiều, chẳng hạn như in dấu sao trong hàng và cột như minh họa bên dưới. Khi một vòng lặp được lồng vào bên trong một vòng lặp khác, vòng lặp bên trong sẽ chạy nhiều lần bên trong vòng lặp bên ngoài.
Tại sao chúng ta sử dụng vòng lặp for lồng nhau?Vòng lặp lồng nhau hữu ích khi với mỗi lần đi qua vòng lặp bên ngoài, bạn cần lặp lại một số thao tác trên dữ liệu ở vòng lặp bên ngoài . Ví dụ: bạn đọc từng dòng của một tệp và đối với mỗi dòng, bạn phải đếm xem từ “the” được tìm thấy bao nhiêu lần. |