Hãy sử dụng câu hỏi này để xem xét một số khái niệm. Tôi nghĩ rằng thật tốt khi trước tiên nhìn thấy các nguyên tắc cơ bản để bạn có thể ngoại suy cho các trường hợp khác nhau.
Câu trả lời khác cung cấp câu trả lời cụ thể cho câu hỏi của bạn. Trước tiên tôi sẽ đưa ra một số bối cảnh chung và sau đó tôi sẽ trả lời câu hỏi.
Nguyên tắc cơ bản
new_list = [x for x in range[1, 10] if x % 2 and x % 3 == 0]
> [6]
0 Câu trong danh sách toàn diện liên quan đến hai điều:- Danh sách toàn diện
- Biểu thức có điều kiện [toán tử ternary]
1. Liệt kê toàn diện
Họ cung cấp một cách ngắn gọn để tạo danh sách.
Cấu trúc của nó bao gồm: "Giá đỡ chứa một biểu thức theo sau là mệnh đề cho mệnh đề, sau đó không hoặc nhiều hơn cho hoặc nếu mệnh đề".
Trường hợp 1
Ở đây chúng tôi không có điều kiện. Mỗi mục từ ITBER có thể được thêm vào
new_list = [x for x in range[1, 10] if x % 2 and x % 3 == 0]
> [6]
1.new_list = [expression for item in iterable]
new_list = [x for x in range[1, 10]]
> [1, 2, 3, 4, 5, 6, 7, 8, 9]
Trường hợp 2
Ở đây chúng tôi có một điều kiện.
ví dụ 1
Điều kiện: Chỉ các số thậm chí sẽ được thêm vào
new_list = [x for x in range[1, 10] if x % 2 and x % 3 == 0]
> [6]
1.new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0]
> [2, 4, 6, 8]
Ví dụ 2
Điều kiện: Chỉ các số thậm chí là bội số của 3 sẽ được thêm vào
new_list = [x for x in range[1, 10] if x % 2 and x % 3 == 0]
> [6]
1.new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0 if x % 3 == 0]
> [6]
Nhưng làm thế nào chúng ta có một điều kiện nếu chúng ta sử dụng hai
new_list = [x for x in range[1, 10] if x % 2 and x % 3 == 0]
> [6]
4 trong new_list = [x for x in range[1, 10] if x % 2 and x % 3 == 0]
> [6]
1?Biểu thức trước có thể được viết là:
new_list = [x for x in range[1, 10] if x % 2 and x % 3 == 0]
> [6]
Chúng tôi chỉ sử dụng một tuyên bố
new_list = [x for x in range[1, 10] if x % 2 and x % 3 == 0]
> [6]
4.Điều này giống như làm:
new_list = []
for x in range[1, 10]:
if x % 2 == 0 and x % 3 == 0:
new_list.append[x]
> [6]
Ví dụ 3
Chỉ vì lợi ích của đối số, bạn cũng có thể sử dụng
new_list = [x for x in range[1, 10] if x % 2 and x % 3 == 0]
> [6]
7.Điều kiện: Ngay cả số hoặc số bội số của 3 sẽ được thêm vào
new_list = [x for x in range[1, 10] if x % 2 and x % 3 == 0]
> [6]
1.new_list = [x for x in range[1, 10] if x % 2 == 0 or x % 3 == 0]
> [2, 3, 4, 6, 8, 9]
Trường hợp 3
Nhiều hơn một điều kiện:
Ở đây chúng ta cần sự trợ giúp của các biểu thức có điều kiện [toán tử ternary].
2. Biểu thức điều kiện
Biểu thức có điều kiện là gì? Những gì tên nói: một biểu thức python có một số điều kiện.
if condition else
Đầu tiên
new_list = [x for x in range[1, 10] if x % 2 and x % 3 == 0]
> [6]
9 được đánh giá. Nếu new_list = [x for x in range[1, 10] if x % 2 and x % 3 == 0]
> [6]
9 là new_list = []
for x in range[1, 10]:
if x % 2 == 0 and x % 3 == 0:
new_list.append[x]
> [6]
1, thì new_list = []
for x in range[1, 10]:
if x % 2 == 0 and x % 3 == 0:
new_list.append[x]
> [6]
2 được đánh giá và trả lại. Nếu new_list = [x for x in range[1, 10] if x % 2 and x % 3 == 0]
> [6]
9 là new_list = []
for x in range[1, 10]:
if x % 2 == 0 and x % 3 == 0:
new_list.append[x]
> [6]
4, thì new_list = []
for x in range[1, 10]:
if x % 2 == 0 and x % 3 == 0:
new_list.append[x]
> [6]
5 được đánh giá và trả lại.Một biểu thức có điều kiện với nhiều hơn một điều kiện:
if condition else if condition else ...
Một ví dụ từ Real Python:
age = 12
s = 'minor' if age < 21 else 'adult'
> minor
Giá trị của
new_list = []
for x in range[1, 10]:
if x % 2 == 0 and x % 3 == 0:
new_list.append[x]
> [6]
6 được điều hòa theo giá trị new_list = []
for x in range[1, 10]:
if x % 2 == 0 and x % 3 == 0:
new_list.append[x]
> [6]
7.3. Tiểu thuyết với điều kiện
Chúng tôi đặt danh sách toàn diện và điều kiện với nhau như thế này.
new_list = [ for in ]
new_list = [ if condition else if condition else for in ]
Điều kiện: Ngay cả các số sẽ được thêm vào là
new_list = []
for x in range[1, 10]:
if x % 2 == 0 and x % 3 == 0:
new_list.append[x]
> [6]
8, số ba sẽ được thêm vào là new_list = []
for x in range[1, 10]:
if x % 2 == 0 and x % 3 == 0:
new_list.append[x]
> [6]
9 và phần còn lại sẽ được thêm vào là new_list = [x for x in range[1, 10] if x % 2 == 0 or x % 3 == 0]
> [2, 3, 4, 6, 8, 9]
0.new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0]
> [2, 4, 6, 8]
0Câu trả lời cho câu hỏi
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0]
> [2, 4, 6, 8]
1Ở đây chúng tôi có một vấn đề với cấu trúc của danh sách:
new_list = [x for x in range[1, 10] if x % 2 == 0 or x % 3 == 0]
> [2, 3, 4, 6, 8, 9]
1 nên ở cuối biểu thức.Cách đúng:
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0]
> [2, 4, 6, 8]
2Đọc thêm:
Python có toán tử điều kiện ternary không?
Danh sách hiểu so với vòng lặp trong Python
Giả sử, chúng tôi muốn tách các chữ cái của từ
new_list = [x for x in range[1, 10] if x % 2 == 0 or x % 3 == 0]
> [2, 3, 4, 6, 8, 9]
2 và thêm các chữ cái làm mục của một danh sách. Điều đầu tiên xuất hiện trong tâm trí sẽ được sử dụng cho Loop.Ví dụ 1: Lặp lại qua một chuỗi sử dụng cho vòng lặp
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0]
> [2, 4, 6, 8]
3Khi chúng tôi chạy chương trình, đầu ra sẽ là:
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0]
> [2, 4, 6, 8]
4Tuy nhiên, Python có một cách dễ dàng hơn để giải quyết vấn đề này bằng cách sử dụng danh sách hiểu. Danh sách hiểu là một cách thanh lịch để xác định và tạo danh sách dựa trên danh sách hiện có.
Hãy để xem cách chương trình trên có thể được viết bằng cách sử dụng toàn bộ danh sách.
Ví dụ 2: Lặp lại qua chuỗi bằng cách sử dụng danh sách hiểu
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0]
> [2, 4, 6, 8]
5Khi chúng tôi chạy chương trình, đầu ra sẽ là:
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0]
> [2, 4, 6, 8]
4Tuy nhiên, Python có một cách dễ dàng hơn để giải quyết vấn đề này bằng cách sử dụng danh sách hiểu. Danh sách hiểu là một cách thanh lịch để xác định và tạo danh sách dựa trên danh sách hiện có.
Hãy để xem cách chương trình trên có thể được viết bằng cách sử dụng toàn bộ danh sách.
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0]
> [2, 4, 6, 8]
7Ví dụ 2: Lặp lại qua chuỗi bằng cách sử dụng danh sách hiểu
Trong ví dụ trên, một danh sách mới được gán cho biến H_Letters và danh sách chứa các mục của chuỗi 'con người'. Chúng tôi gọi hàm
new_list = [x for x in range[1, 10] if x % 2 == 0 or x % 3 == 0]
> [2, 3, 4, 6, 8, 9]
3 để nhận đầu ra.Cú pháp của danh sách hiểu
Bây giờ chúng ta có thể xác định nơi sử dụng toàn bộ danh sách.
Nếu bạn nhận thấy,
new_list = [x for x in range[1, 10] if x % 2 == 0 or x % 3 == 0]
> [2, 3, 4, 6, 8, 9]
2 là một chuỗi, không phải là một danh sách. Đây là sức mạnh của sự hiểu biết danh sách. Nó có thể xác định khi nào nó nhận được một chuỗi hoặc một tuple và hoạt động trên nó như một danh sách.Bạn có thể làm điều đó bằng cách sử dụng các vòng lặp. Tuy nhiên, không phải mọi vòng lặp đều có thể được viết lại dưới dạng hiểu biết danh sách. Nhưng khi bạn học và cảm thấy thoải mái với các toàn bộ danh sách, bạn sẽ thấy mình thay thế ngày càng nhiều vòng lặp bằng cú pháp thanh lịch này.
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0]
> [2, 4, 6, 8]
8Liệt kê toàn diện so với các chức năng Lambda
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0]
> [2, 4, 6, 8]
9Danh sách toàn diện không phải là cách duy nhất để làm việc trong danh sách. Các chức năng tích hợp khác nhau và các chức năng Lambda có thể tạo và sửa đổi danh sách trong các dòng mã ít hơn.
Ví dụ 3: Sử dụng các hàm Lambda bên trong danh sách
Khi chúng tôi chạy chương trình, đầu ra sẽ
Tuy nhiên, sự hiểu biết danh sách thường dễ đọc của con người hơn các chức năng Lambda. Nó dễ dàng hơn để hiểu những gì lập trình viên đã cố gắng thực hiện khi sử dụng toàn bộ danh sách.
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0 if x % 3 == 0]
> [6]
0Điều kiện trong danh sách hiểu
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0 if x % 3 == 0]
> [6]
1Danh sách các hệ thống có thể sử dụng câu lệnh có điều kiện để sửa đổi danh sách hiện có [hoặc các bộ dữ liệu khác]. Chúng tôi sẽ tạo danh sách sử dụng toán tử toán học, số nguyên và phạm vi [].
Ví dụ 4: Sử dụng nếu có danh sách hiểu
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0 if x % 3 == 0]
> [6]
2Điều kiện trong danh sách hiểu
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0 if x % 3 == 0]
> [6]
3Danh sách các hệ thống có thể sử dụng câu lệnh có điều kiện để sửa đổi danh sách hiện có [hoặc các bộ dữ liệu khác]. Chúng tôi sẽ tạo danh sách sử dụng toán tử toán học, số nguyên và phạm vi [].
- Ví dụ 4: Sử dụng nếu có danh sách hiểu
- Khi chúng tôi chạy chương trình trên, đầu ra sẽ là:
Danh sách, number_list, sẽ được điền bởi các mục trong phạm vi từ 0-19 nếu giá trị của vật phẩm chia hết cho 2.
Ví dụ 5: Nested nếu có danh sách hiểu
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0 if x % 3 == 0]
> [6]
4Điều kiện trong danh sách hiểu
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0 if x % 3 == 0]
> [6]
5Danh sách các hệ thống có thể sử dụng câu lệnh có điều kiện để sửa đổi danh sách hiện có [hoặc các bộ dữ liệu khác]. Chúng tôi sẽ tạo danh sách sử dụng toán tử toán học, số nguyên và phạm vi [].
Ví dụ 4: Sử dụng nếu có danh sách hiểu
Khi chúng tôi chạy chương trình trên, đầu ra sẽ là:
Danh sách, number_list, sẽ được điền bởi các mục trong phạm vi từ 0-19 nếu giá trị của vật phẩm chia hết cho 2.
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0 if x % 3 == 0]
> [6]
6Ví dụ 5: Nested nếu có danh sách hiểu
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0 if x % 3 == 0]
> [6]
7Ở đây, danh sách kiểm tra hiểu biết:
Y có phải chia cho 2 hay không?
Y có phải chia 5 hay không?
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0 if x % 3 == 0]
> [6]
8Điều kiện trong danh sách hiểu
new_list = [expression for item in iterable if condition == True]
new_list = [x for x in range[1, 10] if x % 2 == 0 if x % 3 == 0]
> [6]
9Danh sách các hệ thống có thể sử dụng câu lệnh có điều kiện để sửa đổi danh sách hiện có [hoặc các bộ dữ liệu khác]. Chúng tôi sẽ tạo danh sách sử dụng toán tử toán học, số nguyên và phạm vi [].
Ví dụ 4: Sử dụng nếu có danh sách hiểu The nested loops in list comprehension don’t work like normal nested loops. In the above program,
new_list = [x for x in range[1, 10] if x % 2 == 0 or x % 3 == 0]
> [2, 3, 4, 6, 8, 9]
9 is executed
before if condition else
0. Hence at first, a value is assigned to i then item directed by if condition else
1 is appended in the transpose variable.Khi chúng tôi chạy chương trình trên, đầu ra sẽ là:
- Danh sách, number_list, sẽ được điền bởi các mục trong phạm vi từ 0-19 nếu giá trị của vật phẩm chia hết cho 2.
- Ví dụ 5: Nested nếu có danh sách hiểu
- Ở đây, danh sách kiểm tra hiểu biết:
- Y có phải chia cho 2 hay không?