Hướng dẫn list comprehension in python if-else - hiểu danh sách trong python if-else

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]
0

Câ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]
3

Khi 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]
4

Tuy 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]
5

Khi 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]
4

Tuy 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]
7

Ví 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]
8

Liệ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]
9

Danh 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]
1

Danh 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]
3

Danh 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 [].

  1. Ví dụ 4: Sử dụng nếu có danh sách hiểu
  2. 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]
5

Danh 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]
6

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]
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]
9

Danh 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?

Tôi có thể sử dụng nếu

Bạn cũng có thể sử dụng IF-Else trong danh sách hiểu trong Python. Vì trong một sự hiểu biết, điều đầu tiên chúng tôi chỉ định là giá trị để đưa vào một danh sách, đây là nơi chúng tôi đặt if-else của mình. Mã này lưu trữ trong một danh sách, cho mỗi số nguyên từ 0 đến 7, cho dù đó là chẵn hay kỳ lạ.. Since in a comprehension, the first thing we specify is the value to put in a list, this is where we put our if-else. This code stores in a list, for each integer from 0 to 7, whether it is even or odd.

Bạn có thể đặt một câu lệnh IF trong một danh sách hiểu?

Bạn có thể thêm một câu lệnh IF ở cuối danh sách hiểu để chỉ trả về các mục đáp ứng một điều kiện nhất định.Ví dụ: mã bên dưới chỉ trả về các số trong danh sách lớn hơn hai.. For example, the code below returns only the numbers in the list that are greater than two.

Phương pháp hiểu danh sách trong Python là gì?

Một danh sách Python hiểu bao gồm các dấu ngoặc chứa biểu thức, được thực thi cho mỗi phần tử cùng với vòng lặp để lặp lại trên mỗi phần tử trong danh sách Python.Sự hiểu biết danh sách Python cung cấp một cú pháp ngắn hơn nhiều để tạo một danh sách mới dựa trên các giá trị của một danh sách hiện có.consists of brackets containing the expression, which is executed for each element along with the for loop to iterate over each element in the Python list. Python List comprehension provides a much more short syntax for creating a new list based on the values of an existing list.

Là toàn bộ danh sách nhanh hơn so với các vòng lặp?

Danh sách toàn diện nhanh hơn các vòng lặp để tạo danh sách.Nhưng, điều này là do chúng tôi đang tạo một danh sách bằng cách nối thêm các yếu tố mới vào mỗi lần lặp.. But, this is because we are creating a list by appending new elements to it at each iteration.

Bài Viết Liên Quan

Chủ Đề