Thay thế vòng lặp trong python

Ví dụ, bạn có thể sử dụng vòng lặp để lặp qua danh sách giá trị, tích lũy tổng, lặp lại hành động, v.v.

Trong Python, bạn có thể sử dụng các vòng lặp for và while để đạt được hành vi lặp

Ví dụ: đây là một vòng lặp for đơn giản in danh sách tên vào bảng điều khiển

names = ["Ann", "Sofie", "Jack"]

for name in names:
    print[name]

Và đây là một vòng lặp while đơn giản in các số từ 0 đến 5

i = 0

while[i < 5]:
    print[i]
    i += 1

Trong hướng dẫn này, bạn sẽ học

  • Cách sử dụng vòng lặp for và while trong Python [thân thiện với người mới bắt đầu]
  • Cách kiểm soát luồng của vòng lặp for và while [thân thiện với người mới bắt đầu]
  • Các cách khác để tạo vòng lặp for và while trong Python [trung cấp]
  • Cách sử dụng mô-đun Itertools của Python cho các tác vụ liên quan đến vòng lặp [trung cấp]

Đối với vòng lặp trong Python

Trong Python, vòng lặp for được sử dụng để lặp qua một lần lặp [chẳng hạn như danh sách hoặc từ điển]

  • Iterable là bất kỳ đối tượng Python nào mà bạn có thể lặp lại. Ví dụ: một danh sách hoặc một từ điển

Đây là cú pháp cơ bản của vòng lặp for

for val in sequence:
    # some action

Trong đó val là biến trong đó các phần tử bên trong chuỗi được lưu trữ lần lượt trong mỗi lần lặp

Chẳng hạn, hãy lặp qua một danh sách tên và in chúng

names = ["Ann", "Sofie", "Jack"]

for name in names:
    print[name]

đầu ra

Ann
Sofie
Jack

Đối với… Vòng lặp khác trong Python

Bạn có thể sử dụng câu lệnh other trong vòng lặp for. Khối khác được thực thi khi vòng lặp kết thúc

Ví dụ

for i in range[3]:
    print[i]
else:
    print['Looping completed.']

đầu ra

0
1
2
Looping completed.

Hàm Range[] trong Python—Theo dõi chỉ mục vòng lặp

Cho đến giờ, bạn đã thấy một vòng lặp for chọn từng phần tử một từ một tập hợp

Tuy nhiên, đôi khi bạn có thể muốn sử dụng cách tiếp cận truyền thống để lặp. bắt đầu từ số 

0
1
2
Looping completed.
5 và kết thúc đến 
0
1
2
Looping completed.
6. Ví dụ, điều này có thể hữu ích khi bạn muốn liên kết một chỉ mục với từng phần tử

Bạn có thể sử dụng hàm range[] tích hợp để đạt được điều này. Hàm này trả về một đối tượng phạm vi là một dãy số trong phạm vi đã cho. Hàm phạm vi loại trừ đối số thứ hai

Ví dụ

print[list[range[0,5]]]

đầu ra

i = 0

while[i < 5]:
    print[i]
    i += 1
0

Ví dụ: hãy in tên của một nhóm người và vị trí tương đối của họ trong hàng đợi bằng hàm range[] 

i = 0

while[i < 5]:
    print[i]
    i += 1
1

đầu ra

i = 0

while[i < 5]:
    print[i]
    i += 1
0

Tìm thêm ví dụ về vòng lặp tại đây

Vòng lặp While trong Python

Bây giờ bạn đã biết những kiến ​​thức cơ bản về cách sử dụng vòng lặp for. Tiếp theo chúng ta hãy xem vòng lặp while

Trong python, bạn có thể sử dụng vòng lặp while để lặp lại một khối câu lệnh cho đến khi một điều kiện nhất định được thỏa mãn. Khi điều kiện trở thành sai vòng lặp kết thúc

Chẳng hạn, để in các số từ 0 đến 5, bạn có thể sử dụng vòng lặp while như thế này

i = 0

while[i < 5]:
    print[i]
    i += 1
1

đầu ra

i = 0

while[i < 5]:
    print[i]
    i += 1
2

Tương tự như vòng lặp for, bạn có thể sử dụng vòng lặp while để lặp qua các vòng lặp, chẳng hạn như danh sách các số

Để lặp qua một danh sách bằng vòng lặp while, bạn cần biết độ dài của danh sách và theo dõi một chỉ mục để không bắn quá nhiều vào nó. Điều này là do vòng lặp while hoạt động sao cho trên mỗi lần lặp lại, bạn truy cập vào một phần tử danh sách có chỉ mục

Ví dụ

i = 0

while[i < 5]:
    print[i]
    i += 1
3

đầu ra

i = 0

while[i < 5]:
    print[i]
    i += 1
4

Vòng lặp While…Else trong Python

Bạn có thể sử dụng câu lệnh else trong vòng lặp while . Khối khác được thực thi khi điều kiện lặp trở thành sai. Nói cách khác, khi vòng lặp kết thúc

Nếu một vòng lặp bị kết thúc bởi câu lệnh break thì khối lệnh khác không được thực thi

Đọc thêm về các khối khác trong vòng lặp trong Python

Ví dụ

i = 0

while[i < 5]:
    print[i]
    i += 1
5

đầu ra

i = 0

while[i < 5]:
    print[i]
    i += 1
6

Vòng lặp lồng nhau trong Python

Bây giờ bạn đã biết cách sử dụng cả vòng lặp for và while trong Python

Cần hiểu rằng bạn có thể tạo một vòng lặp bên trong một vòng lặp. Đây được gọi là vòng lặp lồng nhau

Ví dụ, đây là một vòng lặp for lồng nhau để in các danh sách của một danh sách

i = 0

while[i < 5]:
    print[i]
    i += 1
7

đầu ra

i = 0

while[i < 5]:
    print[i]
    i += 1
8

Ví dụ vòng lặp While lồng nhau

Hãy lặp lại ví dụ trên với vòng lặp while lồng nhau

i = 0

while[i < 5]:
    print[i]
    i += 1
9

đầu ra

i = 0

while[i < 5]:
    print[i]
    i += 1
8

Phá vỡ, Tiếp tục và Vượt qua — Kiểm soát Dòng chảy của Vòng lặp

Bạn có thể kiểm soát luồng thực thi của một vòng lặp bằng cách sử dụng các câu lệnh  và tiếp tục. Chúng hoạt động theo cùng một cách đối với cả vòng lặp while và 

0
1
2
Looping completed.
7 vòng lặp

  • Câu lệnh break kết thúc vòng lặp và tiếp tục thực thi ở câu lệnh đầu tiên sau vòng lặp
  • Câu lệnh tiếp tục kết thúc bước lặp hiện tại của vòng lặp và chuyển sang bước lặp tiếp theo

Ví dụ phá vỡ

Câu lệnh break ngắt vòng lặp và tiếp tục thực hiện chương trình từ dòng có thể tiếp theo sau vòng lặp

Ví dụ

for val in sequence:
    # some action
1

đầu ra

for val in sequence:
    # some action
2

tiếp tục ví dụ

Câu lệnh continue bỏ qua “phần còn lại của vòng lặp” và bắt đầu lần lặp tiếp theo

for val in sequence:
    # some action
3

đầu ra

for val in sequence:
    # some action
4

Câu lệnh tiếp tục nhảy ra khỏi lần lặp hiện tại và bắt đầu lần lặp tiếp theo. Nếu n > 3 câu lệnh tiếp tục không đạt được nữa. Điều này có nghĩa là hành động in sẽ diễn ra

Bây giờ bạn đã biết cách kiểm soát luồng thực thi của một vòng lặp bằng cách sử dụng các câu lệnh break và tiếp tục

Hãy cùng xem câu lệnh pass là một cách để bỏ qua một vòng lặp trống

Truyền câu lệnh trong Python

Trong Python, không thể để trống một vòng lặp [hoặc bất kỳ thứ gì xuất hiện sau dấu hai chấm]. Nhưng có một thẻ từ khóa dành riêng cho điều đó

Chẳng hạn, nếu bạn muốn vượt qua việc triển khai vòng lặp for, hãy thực hiện như thế này

for val in sequence:
    # some action
5

Một lớp lót cho các vòng lặp bằng cách hiểu danh sách

Bây giờ bạn đã biết kiến ​​thức cơ bản về vòng lặp trong Python. Đã đến lúc xem xét cách nén các vòng lặp bằng cách hiểu. Điều này có thể giúp giảm dòng mã và cải thiện chất lượng mã

Khả năng hiểu danh sách là một tính năng tích hợp sẵn trong Python. Bạn có thể thay thế các vòng lặp bằng các biểu thức một dòng

Cú pháp để hiểu danh sách trông như thế này

for val in sequence:
    # some action
6

Liệt kê các ví dụ về sự hiểu biết

Hãy in một danh sách các số bằng cách hiểu

for val in sequence:
    # some action
7

đầu ra

i = 0

while[i < 5]:
    print[i]
    i += 1
4

Ví dụ này không thực tế, bởi vì việc hiểu danh sách có nghĩa là tạo một lần lặp mới dựa trên một lần lặp hiện có

Để chứng minh điều này, hãy bình phương một danh sách các số

for val in sequence:
    # some action
9

đầu ra

names = ["Ann", "Sofie", "Jack"]

for name in names:
    print[name]
0

Bạn có thể thêm một điều kiện vào cuối phần hiểu. Chẳng hạn, hãy lọc các số lẻ ra khỏi danh sách

names = ["Ann", "Sofie", "Jack"]

for name in names:
    print[name]
1

đầu ra

names = ["Ann", "Sofie", "Jack"]

for name in names:
    print[name]
2

Liệt kê hiệu suất hiểu trong Python

Khả năng hiểu danh sách nhanh hơn ~10% so với vòng lặp for thông thường

Ví dụ: đây là mức trung bình trong thời gian chạy bằng cách sử dụng cả khả năng hiểu vòng lặp và danh sách để bình phương danh sách 1 triệu số nguyên

Đối với việc bình phương một danh sách các số, khả năng hiểu nhanh hơn khoảng 10%.

Tuy nhiên, lợi thế nhỏ về hiệu suất không phải là lý do để sử dụng khả năng hiểu. Mục tiêu của việc sử dụng khả năng hiểu là để tránh các dòng mã không cần thiết và cải thiện khả năng đọc. Sử dụng các cách hiểu dài dòng để đạt hiệu suất sẽ không có ý nghĩa gì nếu nó hy sinh chất lượng mã.

Các kiểu hiểu khác trong Python

Hiểu danh sách không phải là loại hiểu duy nhất có. Python cũng hỗ trợ

Để giữ cho nó ngắn gọn, tôi sẽ không đưa ra các ví dụ về những điều này. Hơn nữa, những cách hiểu này gần giống với cách hiểu danh sách

Tóm tắt hiểu

  • Khả năng hiểu danh sách có thể cải thiện chất lượng mã và giảm số lượng dòng mã
  • Tránh viết danh sách hiểu dài dòng. Điều này làm cho mã khó theo dõi
  • Mọi cách hiểu danh sách có thể được viết dưới dạng vòng lặp for, nhưng không phải theo cách khác
  • Sự hiểu biết mang lại lợi thế về hiệu suất nhỏ so với vòng lặp for thông thường

Hàm liệt kê [] trong Python

Bạn có nhớ ví dụ mà bạn đã sử dụng hàm range[] trong vòng lặp for để theo dõi chỉ mục của phần tử hiện tại không? . Hàm enumerate[] tích hợp sẵn. Bạn có thể sử dụng nó với các vòng lặp để theo dõi chỉ mục của phần tử hiện tại

Ví dụ

names = ["Ann", "Sofie", "Jack"]

for name in names:
    print[name]
3

đầu ra

names = ["Ann", "Sofie", "Jack"]

for name in names:
    print[name]
4

Liệt kê [] hoạt động như thế nào

Hàm enumerate[] có hai đối số

  • Một đối tượng có thể lặp lại, chẳng hạn như một danh sách
  • Chỉ mục bắt đầu tùy chọn, là 0 theo mặc định

Nó hoạt động bằng cách trả về một đối tượng liệt kê có chứa các thành phần của iterable cùng với một chỉ mục. Điều này rất hữu ích khi lặp. Bạn không cần theo dõi chỉ mục của phần tử hiện tại vì enumerate[] làm việc đó cho bạn

Hãy chứng minh những gì enumerate[] làm

names = ["Ann", "Sofie", "Jack"]

for name in names:
    print[name]
5

đầu ra

names = ["Ann", "Sofie", "Jack"]

for name in names:
    print[name]
6

Các phần tử danh sách được kết hợp với các chỉ mục. Điều này giúp bạn có thể biết chỉ mục của từng phần tử trong vòng lặp for

names = ["Ann", "Sofie", "Jack"]

for name in names:
    print[name]
7

Thay đổi giá trị ban đầu của chỉ mục trong enumerate[]

Hàm enumerate[] chấp nhận giây. Đây là chỉ mục bắt đầu có giá trị 0 theo mặc định. Nếu bạn muốn lập chỉ mục bắt đầu từ một nơi khác, vui lòng xác định đối số bắt đầu

Ví dụ: hãy bắt đầu lập chỉ mục từ 10

names = ["Ann", "Sofie", "Jack"]

for name in names:
    print[name]
8

đầu ra

names = ["Ann", "Sofie", "Jack"]

for name in names:
    print[name]
9

Điều này kết thúc những điều cơ bản về vòng lặp trong Python bằng cách sử dụng vòng lặp for và while. Các chương tiếp theo là Python trung gian hiển thị cho bạn các lựa chọn thay thế vòng lặp for và while

Thay thế các vòng lặp For và While trong Python bằng các hàm Map[] và Filter[]

Bây giờ bạn đã biết những kiến ​​thức cơ bản về vòng lặp trong Python, hãy chuyển sang các khái niệm trung gian

Trong Python, có các hàm tích hợp dành riêng cho vòng lặp. Các tính năng này hoạt động bằng cách áp dụng hàm lambda trên từng thành phần trong danh sách và trả về phiên bản đã chuyển đổi của danh sách

Trước khi hiển thị ví dụ về cách sử dụng map[] và filter[], hãy cùng tìm hiểu hàm lambda là gì

Biểu thức Lambda trong Python

Hàm lambda là một hàm không có tên. Nó nhận bất kỳ số đối số nào và chỉ có một biểu thức

Để chứng minh, đây là một hàm lambda bình phương một số

Ann
Sofie
Jack
0

Chẳng hạn, hãy bình phương một số bằng hàm lambda

Ann
Sofie
Jack
1

đầu ra

Ann
Sofie
Jack
2

Lambdas rất hữu ích khi cần chức năng này trong một khoảng thời gian ngắn. Nói cách khác, khi bạn không muốn lãng phí tài nguyên bằng cách tạo một phương thức riêng. Một ví dụ tuyệt vời là khi chuyển nó vào hàm map[] 

Hàm Map[] trong Python

Hàm map[] là hàm thay thế cho vòng lặp for. Nó áp dụng một chức năng cho từng phần tử của một lần lặp. Hàm map[] chấp nhận hai đối số

  • Một hàm được áp dụng cho từng phần tử trong danh sách [biểu thức lambda]
  • Một danh sách để hoạt động

Hàm 

0
1
2
Looping completed.
8 trả về là một đối tượng bản đồ. Điều này có thể dễ dàng được chuyển đổi thành một danh sách với hàm list[] 

Để chứng minh điều này, hãy bình phương một danh sách các số

Ann
Sofie
Jack
3

đầu ra

Ann
Sofie
Jack
4

Hàm Filter[] trong Python

Hàm filter[] dùng để lọc các phần tử dựa trên một điều kiện. Hàm lọc nhận hai đối số

  • Biểu thức lambda—một hàm được thực thi cho từng phần tử trong danh sách
  • Một iterable, chẳng hạn như một danh sách, trên đó nó hoạt động

Chẳng hạn, hãy lọc các số chẵn của danh sách số

Ann
Sofie
Jack
5

đầu ra

Ann
Sofie
Jack
6

Itertools—Vòng lặp hiệu quả và dễ dàng trong Python

Itertools là một mô-đun Python. Nó cung cấp cho bạn các hàm để thực hiện các tác vụ liên quan đến lặp qua các lần lặp. Một phương thức Itertool trả về một đối tượng iterator

Trước khi xem các ví dụ, đây là một định nghĩa ngắn cho một trình vòng lặp một có thể lặp lại

  • Iterable là bất kỳ đối tượng Python nào mà bạn có thể lặp lại. Ví dụ: một danh sách hoặc một từ điển
  • Trình lặp là một đối tượng dùng để lặp qua một có thể lặp lại. Một iterator chỉ quan tâm đến phần tử hiện tại của iterable và biết cách lấy phần tử tiếp theo. Điều này làm cho bộ nhớ hiệu quả. Mọi trình lặp đều có thể lặp lại theo bản chất, nhưng không phải theo cách khác

Hãy đi qua một số phương pháp Itertools hữu ích. Nếu không có những thứ này, bạn sẽ cần phải viết các vòng lặp lồng nhau phức tạp để hoàn thành công việc

Tích lũy một danh sách các số

Để tính tổng tích lũy, bạn có thể sử dụng vòng lặp for. Nhưng với sự trợ giúp của Itertools, bạn có thể sử dụng itertools. tích trữ[]

Dưới đây là một minh họa về sự tích lũy

Tích lũy một khoản tiền đang chạy bằng Itertools

Đây là mã

Ann
Sofie
Jack
7

đầu ra

Ann
Sofie
Jack
8

Nếu bạn muốn tích một thứ khác ngoài tổng, hãy chuyển một đối số khác cho phương thức accumulate[]. Đối số này là một hàm được áp dụng cho các phần tử

Ví dụ: hãy tích lũy sản phẩm

Tích lũy sản phẩm đang chạy

Để làm điều này, vượt qua toán tử. mul vào phương thức accumulate[] để tích lũy tích thay vì tổng.

Ann
Sofie
Jack
9

đầu ra

for i in range[3]:
    print[i]
else:
    print['Looping completed.']
0

Nhóm một tập hợp các phần tử với chức năng groupby[]

Bạn có thể nhóm một lần lặp theo một tiêu chí bằng cách sử dụng itertools. phương thức groupby[] 

Hãy nhóm danh sách các số sau đây thành các nhóm số nhỏ hơn ba và lớn hơn bằng ba

for i in range[3]:
    print[i]
else:
    print['Looping completed.']
1

đầu ra

for i in range[3]:
    print[i]
else:
    print['Looping completed.']
2

Tính tích Descartes

Tích Descartes là một nhóm gồm tất cả các cặp từ hai danh sách

tích Descartes

Để tính tích Descartes, bạn có thể sử dụng vòng lặp for. Nhưng Itertools cung cấp cho bạn một cách để lấy nó bằng cách sử dụng itertools. phương thức product[]. Nó trả về tích Descartes dưới dạng một đối tượng lặp

Ví dụ

for i in range[3]:
    print[i]
else:
    print['Looping completed.']
3

đầu ra

for i in range[3]:
    print[i]
else:
    print['Looping completed.']
4

Có được tất cả các hoán vị

Với một nhóm các mục, bạn có thể tìm tất cả các cách có thể để sắp xếp chúng bằng itertools. hoán vị[]

Ví dụ

for i in range[3]:
    print[i]
else:
    print['Looping completed.']
5

đầu ra

for i in range[3]:
    print[i]
else:
    print['Looping completed.']
6

Nhận tất cả các kết hợp

Sử dụng itertools. tổ hợp[] để tìm tất cả các tổ hợp [có kích thước n] của một nhóm mục

Chẳng hạn, hãy tìm tất cả các cặp bạn có thể tạo từ danh sách ba số

for i in range[3]:
    print[i]
else:
    print['Looping completed.']
7

đầu ra

for i in range[3]:
    print[i]
else:
    print['Looping completed.']
8

Trình vòng lặp vô hạn—Vòng lặp vô hạn hợp lệ

Trình lặp vô hạn có thể đưa ra một dòng số vô hạn. Nó giống như một “vòng lặp vô hạn hợp lệ”

Không thể lưu trữ vô số phần tử trong bộ nhớ. Nhưng vì trình vòng lặp chỉ quan tâm đến phần tử hiện tại nên có thể tạo ra vô số luồng mục mục bằng cách sử dụng trình vòng lặp

Hãy đi qua các ví dụ

Đếm

Bạn có thể sử dụng itertools. Count[] phương thức lặp số từ số bắt đầu đến vô cùng

Ví dụ: hãy tạo một dòng số vô hạn bắt đầu từ 10

for i in range[3]:
    print[i]
else:
    print['Looping completed.']
9

đầu ra

0
1
2
Looping completed.
0

Đi xe đạp

Bạn có thể sử dụng Itertools để sắp xếp danh sách các số bằng itertools. chu kỳ[] phương pháp. Chu kỳ lặp đi lặp lại mãi mãi

Bạn có thể thay vòng lặp while bằng vòng lặp for được không?

vòng lặp for[] luôn có thể được thay thế bằng vòng lặp while[] , nhưng đôi khi, bạn không thể sử dụng vòng lặp for[] mà phải sử dụng vòng lặp while[].

Có vòng lặp for nào khác trong Python không?

Trong hầu hết các ngôn ngữ lập trình [C/C++, Java, v.v.], việc sử dụng câu lệnh other đã bị hạn chế với câu lệnh điều kiện if. Nhưng Python cũng cho phép chúng ta sử dụng điều kiện khác với vòng lặp for . Khối other ngay sau for/while chỉ được thực thi khi vòng lặp KHÔNG bị kết thúc bởi câu lệnh break.

Tôi có thể sử dụng cái gì thay cho vòng lặp for pandas?

Hầu hết thời gian, bạn có thể sử dụng giải pháp vector hóa để thực hiện các thao tác Pandas của mình. Thay vì sử dụng thao tác kiểu “vòng lặp for” liên quan đến việc lặp qua một tập hợp dữ liệu mỗi lần một giá trị, vector hóa có nghĩa là bạn triển khai một giải pháp hoạt động trên toàn bộ tập hợp các giá trị cùng một lúc.

Làm cách nào để thay thế một ký tự trong một chuỗi trong Python bằng vòng lặp for?

Thay thế ký tự trong chuỗi bằng vòng lặp for trong python . using the replace[] function or sub[] function or a for loop.

Chủ Đề