Sản phẩm cartesian hiểu danh sách Python

Hiểu danh sách là một cấu trúc cú pháp tạo danh sách dựa trên danh sách hiện có. Khả năng hiểu danh sách cung cấp một cách ngắn gọn để tạo danh sách. Yêu cầu chung là tạo danh sách mới trong đó mỗi phần tử là kết quả của một số thao tác được áp dụng cho từng phần tử của một chuỗi khác hoặc có thể lặp lại hoặc để tạo một chuỗi con gồm các phần tử đó thỏa mãn một điều kiện nhất định

Sử dụng hiểu danh sách Python

Một cách hiểu danh sách có thể được sử dụng để

  • chuyển đổi một danh sách
  • lọc một danh sách

Cú pháp của việc hiểu danh sách bị ảnh hưởng bởi ký hiệu toán học của các tập hợp. Cú pháp Python được lấy cảm hứng từ ngôn ngữ lập trình Haskell

S = {x² : x in {0 .. 16}}

Đây là một ký hiệu toán học để tạo một tập hợp các giá trị số nguyên

L = [expression [if condition] for variable in sequence [if condition]]

Mã giả ở trên cho thấy cú pháp của việc hiểu danh sách. Nó bao gồm ba phần. vòng lặp for, điều kiện tùy chọn và biểu thức. Một vòng lặp for đi qua chuỗi. Đối với mỗi vòng lặp, một biểu thức được ước tính nếu điều kiện được đáp ứng. Nếu giá trị được tính toán, nó sẽ được thêm vào danh sách mới. Có thể có nhiều vòng lặp for và điều kiện if

Ví dụ sau chuyển đổi một danh sách thành một danh sách khác với sự trợ giúp của tính năng hiểu danh sách

#!/usr/bin/python

a = [1, 2, 3, 4, 5, 6]

b = [e * 2 for e in a]
print[b]

Trong ví dụ đầu tiên, chúng tôi tạo danh sách mới từ danh sách hiện có bằng cách nhân mỗi phần tử với 2

b = [e * 2 for e in a]

Mỗi phần tử của danh sách

b = [e * 2 for e in a]
5 được nhân với 2 và kết quả được thêm vào danh sách
b = [e * 2 for e in a]
6 mới

$ ./multiply_elements.py 
[2, 4, 6, 8, 10, 12]

Mỗi phần tử được nhân với hai

Tính nhiệt độ Fahrenheit từ Celsius

Chúng tôi có một danh sách nhiệt độ tính bằng độ C. Chúng tôi muốn tạo một danh sách nhiệt độ mới được biểu thị bằng nhiệt độ Fahrenheit

#!/usr/bin/python

celsius = [22, 28, 33, 42, 52]

fahr = [e * 9/5 + 32 for e in celsius]
print[fahr]

Ví dụ tạo một danh sách nhiệt độ Fahrenheit mới được tính từ danh sách nhiệt độ Celsius

________số 8_______

Việc tính toán được thực hiện trong phần thứ ba, phần biểu thức của phần hiểu danh sách Python

$ ./fahrenheit_celsius.py 
[71.6, 82.4, 91.4, 107.6, 125.6]

Trong ví dụ sau, chúng ta sẽ lọc một danh sách với khả năng hiểu danh sách

#!/usr/bin/python

a = [-4, 2, 0, -1, 12, -3]

b = [e for e in a if e > 0]
print[b]

Chúng tôi có một danh sách các số nguyên. Chúng tôi tạo một danh sách mới trong đó chúng tôi chỉ bao gồm các số nguyên dương

Quảng cáo
b = [e for e in a if e > 0]

Để chỉ bao gồm các số dương, chúng tôi sử dụng điều kiện

b = [e * 2 for e in a]
7, áp dụng cho từng phần tử;

L = [expression [if condition] for variable in sequence [if condition]]
0

Ví dụ tiếp theo lọc các phần tử theo loại của chúng

L = [expression [if condition] for variable in sequence [if condition]]
1

Chúng tôi có một danh sách các phần tử, đó là số nguyên và chuỗi. Chúng tôi tạo hai danh sách mới;

L = [expression [if condition] for variable in sequence [if condition]]
2

Ở đây chúng tôi tạo một danh sách

b = [e * 2 for e in a]
6, danh sách này sẽ chỉ chứa các giá trị số nguyên. Hàm
b = [e * 2 for e in a]
9 được sử dụng để xác định loại phần tử

L = [expression [if condition] for variable in sequence [if condition]]
3

Vị ngữ hiểu danh sách Python

Vị ngữ là một hàm trả về giá trị boolean. Nếu điều kiện quá phức tạp, chúng ta có thể đặt nó vào vị ngữ

L = [expression [if condition] for variable in sequence [if condition]]
4

Ví dụ lọc ra tất cả các nguyên âm từ một câu

L = [expression [if condition] for variable in sequence [if condition]]
5

Chức năng là một vị ngữ. Nó trả về True cho một ký tự nguyên âm

L = [expression [if condition] for variable in sequence [if condition]]
6

Logic của điều kiện if được ủy quyền cho vị từ

$ ./multiply_elements.py 
[2, 4, 6, 8, 10, 12]
0

Quảng cáo
L = [expression [if condition] for variable in sequence [if condition]]
7

Điều kiện

b = [e * 2 for e in a]
7 cũng có thể được đặt ở phía trước. Bằng cách này, dữ liệu có thể được chuyển đổi

L = [expression [if condition] for variable in sequence [if condition]]
8

Trong ví dụ này, chúng tôi chuyển đổi các giá trị thành các giá trị

$ ./multiply_elements.py 
[2, 4, 6, 8, 10, 12]
2 và
$ ./multiply_elements.py 
[2, 4, 6, 8, 10, 12]
3 bằng cách sử dụng khả năng hiểu danh sách

L = [expression [if condition] for variable in sequence [if condition]]
9

Danh sách Python hiểu nhiều điều kiện nếu

Có thể sử dụng nhiều điều kiện if trong cách hiểu danh sách Python

#!/usr/bin/python

a = [1, 2, 3, 4, 5, 6]

b = [e * 2 for e in a]
print[b]
0

Chúng tôi tạo một danh sách mới các số nguyên từ danh sách

b = [e * 2 for e in a]
5, lớn hơn 10 và nhỏ hơn 20

#!/usr/bin/python

a = [1, 2, 3, 4, 5, 6]

b = [e * 2 for e in a]
print[b]
1

Trong cách hiểu danh sách này, chúng tôi sử dụng hai điều kiện if

#!/usr/bin/python

a = [1, 2, 3, 4, 5, 6]

b = [e * 2 for e in a]
print[b]
2

Nhiều vòng lặp hiểu danh sách Python

Có thể có nhiều vòng lặp for trong cách hiểu danh sách Python

#!/usr/bin/python

a = [1, 2, 3, 4, 5, 6]

b = [e * 2 for e in a]
print[b]
3

Ví dụ tạo tích Descartes của hai danh sách

#!/usr/bin/python

a = [1, 2, 3, 4, 5, 6]

b = [e * 2 for e in a]
print[b]
4

Hai vòng lặp for được sử dụng để tạo tích Descartes

#!/usr/bin/python

a = [1, 2, 3, 4, 5, 6]

b = [e * 2 for e in a]
print[b]
5

Ví dụ tiếp theo cho thấy cách làm phẳng danh sách Python

#!/usr/bin/python

a = [1, 2, 3, 4, 5, 6]

b = [e * 2 for e in a]
print[b]
6

Danh sách

$ ./multiply_elements.py 
[2, 4, 6, 8, 10, 12]
5 là danh sách các danh sách lồng nhau. Chúng tôi làm phẳng danh sách bằng cách hiểu danh sách

#!/usr/bin/python

a = [1, 2, 3, 4, 5, 6]

b = [e * 2 for e in a]
print[b]
7

Vòng lặp đầu tiên đi qua danh sách bên ngoài;

#!/usr/bin/python

a = [1, 2, 3, 4, 5, 6]

b = [e * 2 for e in a]
print[b]
8

Biểu thức ban đầu trong cách hiểu danh sách Python có thể là một cách hiểu danh sách khác

Nested_list_comprehension. py

#!/usr/bin/python

a = [1, 2, 3, 4, 5, 6]

b = [e * 2 for e in a]
print[b]
9

Ví dụ xác định ma trận và khả năng hiểu danh sách tạo ma trận chuyển vị từ ma trận gốc

b = [e * 2 for e in a]
0

Sàng Eratosthenes

Sàng của Eratosthenes là một thuật toán cổ xưa để tính toán các số nguyên tố. Số nguyên tố [hay số nguyên tố] là số tự nhiên lớn hơn 1 không có ước dương nào khác 1 và chính nó. Thuật toán đánh dấu lặp đi lặp lại là hợp số [i. e. , không phải số nguyên tố] bội của mỗi số nguyên tố, bắt đầu bằng bội của 2

Sản phẩm Cartesian trong Python là gì?

Tích Đề-các là kết quả của tất cả các tổ hợp có thể có của hai tập hợp có tính đến thứ tự của các tập hợp . Nó dẫn đến một bộ chứa các bộ có ít nhất phần tử từ mỗi bộ được sắp xếp như các bộ ban đầu. Nó là một phần của Toán học nhưng có thể được tạo theo chương trình với python bằng cách sử dụng các lần lặp dưới dạng tập hợp.

Cách thích hợp để viết hiểu danh sách bằng Python là gì?

Viết lại các lệnh gọi vòng lặp và map[] dưới dạng hiểu danh sách trong Python. Chọn giữa các cuộc gọi hiểu, vòng lặp và map[]. .
Khởi tạo một danh sách trống
Lặp lại một lần lặp hoặc phạm vi phần tử
Nối từng phần tử vào cuối danh sách

Khả năng hiểu danh sách có giống như vòng lặp for không?

Sự khác biệt giữa khả năng hiểu danh sách và vòng lặp for. Vòng lặp for là một cách phổ biến để lặp qua một danh sách. Mặt khác, việc hiểu danh sách là một cách hiệu quả hơn để lặp qua danh sách vì nó yêu cầu ít dòng mã hơn.

Chủ Đề