Cú pháp để viết vòng lặp for trên một dòng trong Python là gì?
Vòng lặp C for - W3schools. Trong
Vui lòng bật JavaScript
Vòng lặp C for - W3schools. TrongĐể viết một vòng lặp for trên một dòng trong Python, thường được gọi là hiểu danh sách, hãy bọc vòng lặp for trong một danh sách như vậy.
>>> my_list = [1, 2, 3]
>>> [elem if elem % 2 > 0 for elem in my_list]
File "", line 1
[elem if elem % 2 > 0 for elem in my_list]
^
SyntaxError: invalid syntax
7Dưới đây là một ví dụ minh họa cách mã này hoạt động
>>> my_list = [1, 2, 3]
>>> [elem for elem in my_list]
[1, 2, 3]
Như bạn có thể thấy từ ví dụ trên, đầu ra hoàn toàn giống với đầu vào nhưng thể hiện điểm mà vòng lặp for nội tuyến dưới dạng hoạt động chi tiết
Nếu không được bao bọc trong một danh sách, mã đơn giản sẽ không hoạt động
>>> my_list = [1, 2, 3]
>>> for elem in my_list
File "", line 1
for elem in my_list
^
SyntaxError: invalid syntax
Như bạn có thể thấy từ đầu ra phía trên REPL của Python cho thấy nó đang mong đợi một thứ gì đó nhiều hơn ở cuối một dòng cho vòng lặp [là dấu hai chấm] và do đó báo cáo lỗi
>>> my_list = [1, 2, 3]
>>> [elem if elem % 2 > 0 for elem in my_list]
File "", line 1
[elem if elem % 2 > 0 for elem in my_list]
^
SyntaxError: invalid syntax
8Kết hợp một lớp lót cho vòng lặp với các điều kiện
Một tính năng hữu ích khác của vòng lặp for một lớp là nó cũng cho phép sử dụng các điều kiện cả trước và sau phần vòng lặp for.
Mỗi
>>> my_list = [1, 2, 3]
>>> [elem if elem % 2 > 0 for elem in my_list]
File "", line 1
[elem if elem % 2 > 0 for elem in my_list]
^
SyntaxError: invalid syntax
9 được đặt có thông tin chi tiết riêng về những gì xảy ra với từng phần tử trong vòng lặp forNếu các điều kiện được đặt sau vòng lặp for, điều này sẽ lọc các phần tử được chụp và chèn vào danh sách mới
Ví dụ: nếu tôi muốn lọc danh sách và chỉ chụp các mục là số lẻ thì điều kiện được đặt sau danh sách sẽ được ưu tiên. Đây là một minh chứng
>>> my_list = [1, 2, 3]
>>> [elem for elem in my_list if elem % 2 > 0]
[1, 3]
Lưu ý trong ví dụ trên cách danh sách mới cung cấp cho chúng ta số lượng phần tử giảm [2] so với danh sách ban đầu có 3. Do đó, kỹ thuật này lọc ra các phần tử không thỏa mãn tiêu chí của điều kiện sau vòng lặp for khỏi danh sách
Điều gì xảy ra nếu có các điều kiện được đặt trước vòng lặp for?
Sự khác biệt với các điều kiện được đặt trước vòng lặp for so với các điều kiện được đặt sau vòng lặp for là có cùng số lượng phần tử được giữ lại cho danh sách ban đầu
Ví dụ: bạn không thể xóa một phần tử khỏi danh sách mới bằng cách đặt câu lệnh if trước vòng lặp for – đây là một số ví dụ hiển thị kết quả
>>> my_list = [1, 2, 3]
>>> [elem if elem % 2 > 0 for elem in my_list]
File "", line 1
[elem if elem % 2 > 0 for elem in my_list]
^
SyntaxError: invalid syntax
Cú pháp duy nhất sẽ hoạt động là câu lệnh if một dòng thích hợp có định dạng
value_if_true if expression else value_if_false
Do đó, sẽ cần có một giá trị sai nếu điều kiện không đúng
>>> my_list = [1, 2, 3]
>>> [elem if elem % 2 > 0 else None for elem in my_list]
[1, None, 3]
Lưu ý cách trong kết quả của danh sách này, phần tử thứ hai được đưa ra kết quả của
value_if_true if expression else value_if_false
0 như được định nghĩa trong phần >>> my_list = [1, 2, 3]
>>> for elem in my_list
File "", line 1
for elem in my_list
^
SyntaxError: invalid syntax
0 của câu lệnh if một dòngBản tóm tắt
Vòng lặp for một dòng là một cách tuyệt vời để lặp qua danh sách bằng cách sử dụng một dòng mã. Khi lặp qua danh sách bằng vòng lặp for, bạn cũng có thể chèn điều kiện vào trước hoặc sau vòng lặp for để giúp kiểm soát đầu ra của các phần tử trong danh sách mới
Lặp lại các danh sách, từ điển, bộ và trình tạo bằng cách viết tắt gọn gàng mà không ảnh hưởng đến khả năng đọc
Ảnh của tác giả
Trong Python, bạn có thể biến các vòng lặp
new_nums = [num for num in numbers if num > 0]print[new_nums]9 của mình thành một lớp lót bằng cách sử dụng khả năng hiểu
Python hỗ trợ bốn kiểu hiểu khác nhau cho các kiểu chuỗi chính
- Danh sách hiểu
- hiểu từ điển
- Đặt mức độ hiểu
- hiểu máy phát điện
Tất cả các cách hiểu trông khá giống nhau và chúng đơn giản và thân thiện với người mới bắt đầu. Không dài dòng nữa, chúng ta hãy xem một số ví dụ về cách làm việc với khả năng hiểu trong Python
Liệt kê các hiểu biết
Hãy bắt đầu bằng cách tạo một danh sách số mới dựa trên danh sách hiện có bằng cách loại bỏ tất cả các số âm. Rõ ràng bạn có thể sử dụng vòng lặp
new_nums = [num for num in numbers if num > 0]print[new_nums]9 để giải quyết nhiệm vụ này
đầu ra
[4, 7, 19]
Nhưng bạn cũng có thể làm cho toàn bộ vòng lặp
new_nums = [num for num in numbers if num > 0]print[new_nums]9 này ngắn hơn, dễ đọc hơn và chuyên nghiệp hơn bằng cách sử dụng tính năng hiểu danh sách
new_nums = [num for num in numbers if num > 0]print[new_nums]
đầu ra
[4, 7, 19]
chúc mừng. Bạn vừa lưu bốn dòng mã mà không ảnh hưởng đến khả năng đọc
Tóm lại, đây là cấu trúc chung của việc hiểu danh sách
>>> my_list = [1, 2, 3]
>>> for elem in my_list
File "", line 1
for elem in my_list
^
SyntaxError: invalid syntax
3Để rõ ràng,
[4, 7, 19]
2 là tùy chọn. Ví dụ: xem xét bình phương danh sách [4, 7, 19]
3 bằng cách sử dụng khả năng hiểu danh sách>>> my_list = [1, 2, 3]
>>> for elem in my_list
File "", line 1
for elem in my_list
^
SyntaxError: invalid syntax
6Từ điển hiểu
Ngạc nhiên, ngạc nhiên. Python cũng có một cách viết tắt để lặp qua từ điển. Điều này được gọi là hiểu từ điển
ví dụ 1. Tạo một từ điển từ một danh sách
Giả sử bạn muốn tạo một từ điển từ danh sách
[4, 7, 19]
3. Trong từ điển mới, một số là một khóa và giá trị là một chuỗi đại diện cho số đó. Ngoài ra, bạn chỉ muốn bao gồm các số chẵnđầu ra
>>> my_list = [1, 2, 3]
>>> for elem in my_list
File "", line 1
for elem in my_list
^
SyntaxError: invalid syntax
8Điều này hoạt động tốt. Nhưng bằng cách sử dụng khả năng hiểu từ điển, mọi thứ có thể được thực hiện với một dòng mã
>>> my_list = [1, 2, 3]
>>> for elem in my_list
File "", line 1
for elem in my_list
^
SyntaxError: invalid syntax
9đầu ra
>>> my_list = [1, 2, 3]
>>> for elem in my_list
File "", line 1
for elem in my_list
^
SyntaxError: invalid syntax
8ví dụ 2. Hoạt động trên một từ điển hiện có
Hãy xem một ví dụ khác về hiểu từ điển. Trong ví dụ này, bạn có một từ điển mà bạn cập nhật bằng cách bình phương tất cả các số
Hãy sử dụng từ điển hiểu
>>> my_list = [1, 2, 3]
>>> [elem for elem in my_list if elem % 2 > 0]
[1, 3]
1đầu ra
>>> my_list = [1, 2, 3]
>>> [elem for elem in my_list if elem % 2 > 0]
[1, 3]
2của bạn đi
Một lần nữa, bạn có thể viết một phiên bản đơn giản hơn của vòng lặp
new_nums = [num for num in numbers if num > 0]print[new_nums]9 với một dòng mã mà không ảnh hưởng đến khả năng đọc
Tóm lại, cấu trúc cơ bản của việc hiểu từ điển trông như thế này
new_nums = [num for num in numbers if num > 0]print[new_nums]0
Hãy nhớ bọc biểu thức bên trong
[4, 7, 19]
6 thay vì [4, 7, 19]
7 khi làm việc với phần hiểu từ điểnĐặt mức độ hiểu
Hiểu tập hợp tương tự như hiểu danh sách, nhưng nó hoạt động với các tập hợp
Ví dụ: hãy chuyển tất cả các số chẵn từ một danh sách thành một tập hợp. Đây là cách tiếp cận vòng lặp
new_nums = [num for num in numbers if num > 0]print[new_nums]9
đầu ra
new_nums = [num for num in numbers if num > 0]print[new_nums]1
Tuy nhiên, sử dụng hiểu tập hợp, mọi thứ trở nên đơn giản hơn
new_nums = [num for num in numbers if num > 0]print[new_nums]2
đầu ra
new_nums = [num for num in numbers if num > 0]print[new_nums]1
Cấu trúc của hiểu tập hợp tương tự như cấu trúc của hiểu danh sách và từ điển
new_nums = [num for num in numbers if num > 0]print[new_nums]4
Chỉ cần nhớ sử dụng
[4, 7, 19]
6 thay vì [4, 7, 19]
7Hiểu máy phát điện
Cuối cùng, hãy giới thiệu cách hiểu trình tạo. Tương tự như các cách hiểu khác, cách hiểu trình tạo cung cấp cách viết tắt để làm việc với trình tạo
Giả sử bạn muốn bình phương tất cả các số chẵn trong một danh sách và loại bỏ tất cả các số lẻ
Cách tiếp cận vòng lặp
new_nums = [num for num in numbers if num > 0]print[new_nums]9
đầu ra
new_nums = [num for num in numbers if num > 0]print[new_nums]5
Điều này hoạt động tốt. Nhưng với khả năng hiểu trình tạo, bạn có thể quên phương thức
>>> my_list = [1, 2, 3]
>>> for elem in my_list
File "", line 1
for elem in my_list
^
SyntaxError: invalid syntax
32 để tạo trình tạo và chỉ cần sử dụng phương pháp một lớp