Hướng dẫn multi list comprehension python - python hiểu đa danh sách

Giới thiệu

Danh sách toàn diện cung cấp một cách ngắn gọn để tạo danh sách dựa trên danh sách hiện có. Khi sử dụng toàn bộ danh sách, các danh sách có thể được xây dựng bằng cách tận dụng bất kỳ sự lặp lại nào, bao gồm cả chuỗi và bộ dữ liệu. offer a succinct way to create lists based on existing lists. When using list comprehensions, lists can be built by leveraging any iterable, including strings and tuples.

Về mặt cú pháp, danh sách các toàn bộ bao gồm một sự lặp lại có thể chứa một biểu thức theo sau là một mệnh đề cho. Điều này có thể được theo sau bởi bổ sung cho hoặc nếu các điều khoản, vì vậy sự quen thuộc với các vòng lặp và các câu lệnh có điều kiện sẽ giúp bạn hiểu rõ hơn về danh sách.for loops and conditional statements will help you understand list comprehensions better.

Danh sách các hệ thống cung cấp một cú pháp thay thế để tạo danh sách và các loại dữ liệu tuần tự khác. Mặc dù các phương pháp lặp khác, chẳng hạn như cho các vòng lặp, cũng có thể được sử dụng để tạo danh sách, danh sách toàn diện có thể được ưu tiên vì chúng có thể giới hạn số lượng dòng được sử dụng trong chương trình của bạn.

Điều kiện tiên quyết

Bạn nên cài đặt Python 3 và môi trường lập trình được thiết lập trên máy tính hoặc máy chủ của bạn. Nếu bạn không có môi trường lập trình được thiết lập, bạn có thể tham khảo hướng dẫn cài đặt và thiết lập cho môi trường lập trình cục bộ hoặc cho môi trường lập trình trên máy chủ của bạn phù hợp với hệ điều hành của bạn (Ubuntu, Centos, Debian, v.v.)

Danh sách toàn diện

Trong Python, các toàn bộ danh sách được xây dựng như vậy:

Thông tin: Để làm theo cùng với mã ví dụ trong hướng dẫn này, hãy mở một vỏ tương tác Python trên hệ thống cục bộ của bạn bằng cách chạy lệnh Python3. Sau đó, bạn có thể sao chép, dán hoặc chỉnh sửa các ví dụ bằng cách thêm chúng sau lời nhắc >>>. To follow along with the example code in this tutorial, open a Python interactive shell on your local system by running the python3 command. Then you can copy, paste, or edit the examples by adding them after the >>> prompt.

list_varable = [x for x in itable]

Một danh sách, hoặc khác có thể điều chỉnh được, được gán cho một biến. Các biến bổ sung là viết tắt của các mục trong ITEBLE được xây dựng xung quanh một mệnh đề cho. Từ khóa trong được sử dụng như trong các vòng lặp, để lặp lại trên điều đó.

Hãy xem một ví dụ tạo ra một danh sách dựa trên một chuỗi:

Shark_letters = [Thư cho chữ cái trong 'Shark'] in (Shark_letters)

Ở đây, danh sách mới được gán cho biến Shark_letters biến và chữ cái được sử dụng để đứng cho các mục có trong chuỗi 'cá mập'.

Để chúng tôi xác nhận danh sách mới Shark_letters trông như thế nào, chúng tôi gọi cho nó để in () và nhận đầu ra sau:

Đầu ra

['cá mập']

Danh sách chúng tôi tạo với độ hiểu danh sách bao gồm các mục trong chuỗi 'cá mập', nghĩa là một chuỗi cho mỗi chữ cái.

Danh sách toàn diện có thể được viết lại như đối với các vòng lặp, mặc dù 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.

Sử dụng danh sách hiểu biết của chúng tôi đã tạo danh sách Shark_letters ở trên, hãy viết lại nó dưới dạng vòng lặp. Điều này có thể giúp chúng ta hiểu rõ hơn về cách thức hoạt động của danh sách.

Shark_letters = [] cho thư trong 'Shark': Shark_letters.append (Thư) In (Shark_letters)

Khi tạo một danh sách với một vòng lặp For, biến được gán cho danh sách cần được khởi tạo bằng một danh sách trống, vì nó nằm trong dòng đầu tiên của khối mã của chúng tôi. Vòng lặp for sau đó lặp lại qua vật phẩm, sử dụng chữ cái biến trong chuỗi 'cá mập'. Trong vòng lặp For, mỗi mục trong chuỗi được thêm vào danh sách với phương thức Danh sách.Append (x).

Viết lại Danh sách Hiểu dưới dạng Loop cung cấp cho chúng tôi cùng một đầu ra:

Đầu ra

['cá mập']

Danh sách chúng tôi tạo với độ hiểu danh sách bao gồm các mục trong chuỗi 'cá mập', nghĩa là một chuỗi cho mỗi chữ cái.

Danh sách toàn diện có thể được viết lại như đối với các vòng lặp, mặc dù 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.

Sử dụng danh sách hiểu biết của chúng tôi đã tạo danh sách Shark_letters ở trên, hãy viết lại nó dưới dạng vòng lặp. Điều này có thể giúp chúng ta hiểu rõ hơn về cách thức hoạt động của danh sách.

Shark_letters = [] cho thư trong 'Shark': Shark_letters.append (Thư) In (Shark_letters)

Khi tạo một danh sách với một vòng lặp For, biến được gán cho danh sách cần được khởi tạo bằng một danh sách trống, vì nó nằm trong dòng đầu tiên của khối mã của chúng tôi. Vòng lặp for sau đó lặp lại qua vật phẩm, sử dụng chữ cái biến trong chuỗi 'cá mập'. Trong vòng lặp For, mỗi mục trong chuỗi được thêm vào danh sách với phương thức Danh sách.Append (x).

Viết lại Danh sách Hiểu dưới dạng Loop cung cấp cho chúng tôi cùng một đầu ra:

Danh sách toàn bộ có thể được viết lại như cho các vòng lặp và một số vòng cho các vòng lặp có thể được viết lại để liệt kê các toàn bộ để làm cho mã cô đọng hơn.

Đầu ra

['cá mập']

Danh sách chúng tôi tạo với độ hiểu danh sách bao gồm các mục trong chuỗi 'cá mập', nghĩa là một chuỗi cho mỗi chữ cái.

Danh sách toàn diện có thể được viết lại như đối với các vòng lặp, mặc dù 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.

Sử dụng danh sách hiểu biết của chúng tôi đã tạo danh sách Shark_letters ở trên, hãy viết lại nó dưới dạng vòng lặp. Điều này có thể giúp chúng ta hiểu rõ hơn về cách thức hoạt động của danh sách.

Danh sách đang được tạo, number_list, sẽ được điền với các giá trị bình phương của từng mục trong phạm vi từ 0-9 nếu giá trị vật phẩm được chia cho 2. đầu ra như sau:if the items value is divisible by 2. The output is as follows:

Đầu ra

[0, 4, 16, 36, 64]

Để phá vỡ những gì sự hiểu biết danh sách đang làm nhiều hơn một chút, hãy nghĩ về những gì sẽ được in ra nếu chúng ta chỉ gọi X cho X trong phạm vi (10). Chương trình nhỏ và đầu ra của chúng tôi sau đó sẽ trông giống như sau:

number_list = [x cho x trong phạm vi (10)] in (number_list)

Đầu ra

[0, 4, 16, 36, 64]

Để phá vỡ những gì sự hiểu biết danh sách đang làm nhiều hơn một chút, hãy nghĩ về những gì sẽ được in ra nếu chúng ta chỉ gọi X cho X trong phạm vi (10). Chương trình nhỏ và đầu ra của chúng tôi sau đó sẽ trông giống như sau:

number_list = [x cho x trong phạm vi (10)] in (number_list)if x % 2 == 0] print(number_list)

Đầu ra

[0, 4, 16, 36, 64]

Để phá vỡ những gì sự hiểu biết danh sách đang làm nhiều hơn một chút, hãy nghĩ về những gì sẽ được in ra nếu chúng ta chỉ gọi X cho X trong phạm vi (10). Chương trình nhỏ và đầu ra của chúng tôi sau đó sẽ trông giống như sau:

number_list = [x cho x trong phạm vi (10)] in (number_list)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]x ** 2 for x in range(10) if x % 2 == 0] print(number_list)

Bây giờ, hãy thêm câu lệnh có điều kiện:

Đầu ra

[0, 4, 16, 36, 64]

Để phá vỡ những gì sự hiểu biết danh sách đang làm nhiều hơn một chút, hãy nghĩ về những gì sẽ được in ra nếu chúng ta chỉ gọi X cho X trong phạm vi (10). Chương trình nhỏ và đầu ra của chúng tôi sau đó sẽ trông giống như sau:

number_list = [x cho x trong phạm vi (10)] in (number_list)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Đầu ra

Bây giờ, hãy thêm câu lệnh có điều kiện:

number_list = [x cho x trong phạm vi (10) nếu x % 2 == 0] in (number_list)

[0, 2, 4, 6, 8]

Câu lệnh IF đã giới hạn các mục trong danh sách cuối cùng chỉ bao gồm các mục chia hết cho 2, bỏ qua tất cả các số lẻ.

Cuối cùng, chúng ta có thể thêm toán tử để có mỗi x bình phương:

number_list = [x ** 2 cho x trong phạm vi (10) nếu x % 2 == 0] in (number_list)

Vì vậy, mỗi số trong danh sách trước đó của [0, 2, 4, 6, 8] hiện đang bình phương:

Bạn cũng có thể sao chép các câu lệnh Nested If với Danh sách hiểu:

Đầu ra

number_list = [x cho x trong phạm vi (100) nếu x % 3 == 0 nếu x % 5 == 0] in (number_list)

Ở đây, danh sách hiểu trước tiên sẽ kiểm tra xem số X có chia hết cho 3 không, sau đó kiểm tra xem X có chia hết cho 5. Nếu X thỏa mãn cả hai yêu cầu, nó sẽ in và đầu ra là:

[0, 15, 30, 45, 60, 75, 90]

Có điều kiện nếu các câu lệnh có thể được sử dụng để kiểm soát các mục nào từ một chuỗi hiện tại được bao gồm trong việc tạo một danh sách mới.

Đầu ra

number_list = [x cho x trong phạm vi (100) nếu x % 3 == 0 nếu x % 5 == 0] in (number_list)

Ở đây, danh sách hiểu trước tiên sẽ kiểm tra xem số X có chia hết cho 3 không, sau đó kiểm tra xem X có chia hết cho 5. Nếu X thỏa mãn cả hai yêu cầu, nó sẽ in và đầu ra là:

[0, 15, 30, 45, 60, 75, 90]

Có điều kiện nếu các câu lệnh có thể được sử dụng để kiểm soát các mục nào từ một chuỗi hiện tại được bao gồm trong việc tạo một danh sách mới.

Các vòng lặp trong một danh sách hiểu biết

Các vòng lặp lồng nhau có thể được sử dụng để thực hiện nhiều lần lặp trong các chương trình của chúng tôi.

Lần này, xem xét tốt một sự lồng nhau hiện có để xây dựng vòng lặp và làm việc theo cách của chúng tôi hướng tới một danh sách hiểu.