Trên trang này. hiểu danh sách [f(x) for x in li if. ]Lọc các mục trong danh sáchGiả sử chúng ta có một danh sách. Thông thường, chúng tôi chỉ muốn thu thập các mục đáp ứng các tiêu chí nhất định. Dưới đây, chúng tôi có một danh sách các từ và chúng tôi muốn trích xuất từ đó chỉ những từ có chứa 'wo'. Đối với điều này, trước tiên chúng ta cần tạo một danh sách trống mới, sau đó lặp qua danh sách ban đầu để tìm các mục được đưa vào>>> wood = 'How much wood would a woodchuck chuck if a woodchuck could chuck wood?'.split() >>> wood ['How', 'much', 'wood', 'would', 'a', 'woodchuck', 'chuck', 'if', 'a', 'woodchuck', 'could', 'chuck', 'wood?'] >>> wolist = [] >>> for x in wood: if 'wo' in x: wolist.append(x) >>> wolist ['wood', 'would', 'woodchuck', 'woodchuck', 'wood?'] >>> Show
>>> [x for x in wood if 'wo' in x] ['wood', 'would', 'woodchuck', 'woodchuck', 'wood?'] >>>Bạn muốn một danh sách các từ có hơn 5 ký tự? >>> [x for x in wood if len(x) >= 5] ['would', 'woodchuck', 'chuck', 'woodchuck', 'could', 'chuck', 'wood?'] >>>Các từ có hơn 5 ký tự VÀ kết thúc bằng 'ck' >>> [x for x in wood if len(x) >= 5 and x.endswith('ck')] ['woodchuck', 'chuck', 'woodchuck', 'chuck'] >>>Bạn có được ý tưởng. Về cơ bản, khả năng hiểu danh sách để lọc bắt đầu bằng [x cho x trong li], điều này thực tế tạo ra một danh sách mới giống hệt với li, sau đó xử lý nếu. mệnh đề ở cuối, hoạt động như tiêu chí lọc Chuyển đổi các mục trong danh sáchMột loại nhiệm vụ phổ biến khác với danh sách là biến đổi từng mục. Ví dụ: giả sử tôi muốn tạo một danh sách mới trong đó mỗi từ 'o' được thay thế bằng 'oo' trong mỗi từ. Như trước đây, quy trình vòng lặp for thông thường hoàn thành công việc nhưng tẻ nhạt>>> wood ['How', 'much', 'wood', 'would', 'a', 'woodchuck', 'chuck', 'if', 'a', 'woodchuck', 'could', 'chuck', 'wood?'] >>> doubleo = [] >>> for x in wood: doubleo.append(x.replace('o', 'oo')) >>> doubleo ['Hoow', 'much', 'wooood', 'woould', 'a', 'woooodchuck', 'chuck', 'if', 'a', 'woooodchuck', 'coould', 'chuck', 'wooood?'] >>>Một lần nữa, với khả năng hiểu danh sách, tất cả những gì bạn cần là một dòng mã >>> [x.replace('o', 'oo') for x in wood] ['Hoow', 'much', 'wooood', 'woould', 'a', 'woooodchuck', 'chuck', 'if', 'a', 'woooodchuck', 'coould', 'chuck', 'wooood?'] >>>Một ví dụ khác -- viết hoa mỗi từ >>> [x.capitalize() for x in wood] ['How', 'Much', 'Wood', 'Would', 'A', 'Woodchuck', 'Chuck', 'If', 'A', 'Woodchuck', 'Could', 'Chuck', 'Wood?'] >>>Một danh sách độ dài từ, cho mỗi từ trong gỗ. Vì vậy, bạn có thể thấy điều này tiện dụng như thế nào. Cú pháp hoạt động như thế này. bắt đầu với [x for x in li], tạo ra một danh sách mới giống với li, x ban đầu được thay thế bằng f(x), một hàm nhất định với x là đầu vào. Kết quả là một danh sách mới trong đó mỗi x được chuyển đổi thành f(x) Lọc và chuyển đổi, áp dụng cùng nhaubạn có thể hỏi. chúng ta có thể lọc VÀ chuyển đổi cùng một lúc không? . Dưới đây, chúng tôi chỉ lọc những từ có 'wo' và sau đó viết hoa chúng>>> [x.upper() for x in wood if 'wo' in x] ['WOOD', 'WOULD', 'WOODCHUCK', 'WOODCHUCK', 'WOOD?'] >>>Những gì chúng tôi có ở đây là cú pháp này. [f(x) cho x trong li nếu. ]. Đây là một ví dụ khác. Phép biến đổi f(x) có thể phức tạp hơn. Bên dưới, bạn đang lọc các từ dài hơn 5 ký tự và xuất các từ cũng như độ dài của chúng dưới dạng bộ dữ liệu. Trong sách NLTK, bạn sẽ thấy rất nhiều ví dụ về hiểu danh sách đang hoạt động, thực hiện các thao tác thú vị trên danh sách khổng lồ các từ và dữ liệu ngôn ngữ khác. Bạn nên cảm thấy thoải mái với việc hiểu danh sách. nó sẽ tăng tốc quá trình xử lý văn bản của bạn Ví dụ 4. Bây giờ, hãy tạo một danh sách mới chứa các chữ cái đầu tiên của mọi phần tử trong danh sách đã tồn tại ________số 8_______đầu ra new_list = [] for i in old_list: if filter(i): new_list.append(expressions(i))0 Liệt kê mức độ hiểu Python so với vòng lặp For trong PythonBất cứ khi nào chúng ta muốn lặp lại một khối mã với số lần cố định, cách đầu tiên để thực hiện là sử dụng “vòng lặp for. ” Khả năng hiểu danh sách cũng có khả năng làm điều tương tự và điều đó cũng có cách tiếp cận tốt hơn so với các vòng lặp for vì khả năng hiểu danh sách nhỏ gọn hơn. Do đó, nó cung cấp một giải pháp thay thế rất tốt cho các vòng lặp Khối mã tương tự trong trường hợp sử dụng vòng lặp for sẽ là chữ cái = [] đầu ra new_list = [] for i in old_list: if filter(i): new_list.append(expressions(i))1 Chúng tôi có thể thu được kết quả tương tự bằng cách sử dụng Tính năng hiểu danh sách với số lượng dòng mã ít hơn như được hiển thị bên dưới new_list = [] for i in old_list: if filter(i): new_list.append(expressions(i))2 đầu ra new_list = [] for i in old_list: if filter(i): new_list.append(expressions(i))1 Trong khi sử dụng khả năng hiểu danh sách Python, chúng tôi không nhất thiết phải có một danh sách để tạo một danh sách khác. Chúng ta cũng có thể sử dụng các chuỗi và khả năng hiểu danh sách sẽ xác định nó dưới dạng một chuỗi và xử lý nó dưới dạng một danh sách. Trong ví dụ trên về khối mã hiểu danh sách, Intellipaat là một chuỗi, không phải danh sách Liệt kê mức độ hiểu Python Vs. Hàm Lambda trong PythonTrong Python, chúng tôi cũng sử dụng các hàm Lambda để sửa đổi và thao tác với danh sách. Hàm lambda còn được gọi là hàm ẩn danh. Hàm lambda thường được sử dụng với nhiều hàm tích hợp khác nhau, chẳng hạn như map() filter() và reduce() để hoạt động trên danh sách Bản đồ () với Hàm LambdaTrước tiên hãy xem cách chúng tôi sử dụng map() với hàm Lambda để làm việc trên danh sách new_list = [] for i in old_list: if filter(i): new_list.append(expressions(i))4 Trong đoạn mã trên, chúng tôi đã sử dụng map() với lambda để tạo danh sách chứa các chữ cái của chuỗi “intellipaat” được phân tách bằng dấu phẩy. Tên của danh sách là các chữ cái new_list = [] for i in old_list: if filter(i): new_list.append(expressions(i))5 Chúng ta có thể thu được kết quả tương tự bằng cách sử dụng Danh sách hiểu Python. Các mã hiểu cũng dễ đọc hơn và dễ hiểu hơn
Vì vậy, mã cuối cùng sử dụng Python List Comprehension trông như thế này new_list = [] for i in old_list: if filter(i): new_list.append(expressions(i))6 đầu ra new_list = [] for i in old_list: if filter(i): new_list.append(expressions(i))5 Bạn muốn có kiến thức chuyên sâu về trăn? Bộ lọc () với Hàm LambdaBây giờ chúng ta đã biết cách sử dụng khả năng hiểu danh sách Python như một giải pháp thay thế cho hàm map() kết hợp với lambda, giờ hãy xem cách chúng ta có thể sử dụng khả năng hiểu danh sách Python như một giải pháp thay thế cho hàm filter() Chúng tôi đã sử dụng bộ lọc () với lambda để lọc các giá trị lẻ khỏi danh sách hiện có và lưu các giá trị đã lọc vào danh sách mới trong khối mã sau new_list = [] for i in old_list: if filter(i): new_list.append(expressions(i))8 đầu ra new_list = [] for i in old_list: if filter(i): new_list.append(expressions(i))9 Có thể thu được kết quả tương tự bằng cách sử dụng Python List Comprehension như hình bên dưới new_list = [expression(i) for i in old_list if filter(i)]0 đầu ra new_list = [expression(i) for i in old_list if filter(i)]1 Giảm () với Hàm LambdaNhư đã đề cập ở trên, chúng ta cũng có thể viết mã hàm lambda bằng hàm reduce() để làm cho mã ngắn và hiệu quả hơn bằng cách sử dụng khả năng hiểu danh sách của Python new_list = [expression(i) for i in old_list if filter(i)]2 Ghi chú. Gần đây, mô-đun giảm đã được chuyển sang gói funcools, vì vậy nếu chúng tôi đang sử dụng Python 3, thì chúng tôi sẽ phải nhập mô-đun giảm từ funcools như được hiển thị trong khối mã ở trên new_list = [expression(i) for i in old_list if filter(i)]3 Có thể thu được kết quả tương tự bằng cách sử dụng khả năng hiểu danh sách Python như hình bên dưới new_list = [expression(i) for i in old_list if filter(i)]4 đầu ra new_list = [expression(i) for i in old_list if filter(i)]3 Ghi chú. Ở đây, chúng tôi không phải nhập mô-đun giảm, vì chúng tôi đã thay thế nó bằng hiểu danh sách Python Các điều kiện trong việc hiểu danh sách PythonChúng ta cũng có thể sử dụng các câu điều kiện trong phần hiểu danh sách để sửa đổi và thao tác với danh sách. Hãy tìm hiểu cách thực hiện điều đó với sự trợ giúp của một số ví dụ. Ở đây, chúng ta sẽ sử dụng một hàm toán học range() xác định phạm vi mà chúng ta muốn sử dụng trong các ví dụ của mình. Nó nhận một số nguyên làm tham số và phạm vi bắt đầu từ 0 đến số một nhỏ hơn tham số được cung cấp. Ví dụ: phạm vi (20) sẽ xem xét phạm vi số từ 0 đến ví dụ1. Sử dụng câu lệnh if trong Python Hiểu danh sách new_list = [expression(i) for i in old_list if filter(i)]6 đầu ra new_list = [expression(i) for i in old_list if filter(i)]7 2. Sử dụng IF lồng nhau với khả năng hiểu danh sách Python new_list = [expression(i) for i in old_list if filter(i)]8 đầu ra new_list = [expression(i) for i in old_list if filter(i)]9 Trong ví dụ trên, điều kiện đầu tiên mà tính năng hiểu danh sách kiểm tra là x có chia hết cho 2 không, sau đó nếu điều kiện được đáp ứng, nó sẽ gặp câu lệnh điều kiện khác và kiểm tra xem x được tìm thấy là chia hết cho 2 cũng chia hết cho 2 3. Sử dụng câu lệnh if-else với khả năng hiểu Danh sách Python x = [i for i in range(15)] print (x)0 đầu ra x = [i for i in range(15)] print (x)1 Trong ví dụ trên, việc hiểu danh sách kiểm tra tất cả các số bắt đầu từ 0 đến 9. Nếu tìm thấy x chia hết cho 2, 'x là số chẵn' (trong đó x là số tương ứng) được thêm vào danh sách chẵn_lẻ. Nếu điều kiện không được đáp ứng, thì câu lệnh khác được thực thi và 'x là số lẻ' (trong đó x là số tương ứng) được thêm vào danh sách chẵn_lẻ Danh sách lồng nhau trong hiểu danh sách PythonBất cứ khi nào chúng ta nói về danh sách lồng nhau, phương pháp đầu tiên để triển khai danh sách lồng nhau xuất hiện trong đầu chúng ta là sử dụng vòng lặp lồng nhau. Như chúng ta đã thấy rằng khả năng hiểu danh sách Python có thể được sử dụng thay thế cho các vòng lặp, rõ ràng nó cũng có thể được sử dụng cho các vòng lặp lồng nhau. Hãy xem cách thực hiện với sự trợ giúp của một ví dụ x = [i for i in range(15)] print (x)2 Đầu ra sẽ là x = [i for i in range(15)] print (x)3 Chúng ta có thể thu được kết quả tương tự bằng cách sử dụng khả năng hiểu danh sách Python và khối mã được sử dụng sẽ là bảng = [[x*y cho y trong phạm vi (1,11)] cho x trong phạm vi (4,7)] đầu ra x = [i for i in range(15)] print (x)4 Trong ví dụ trên, chúng tôi đã sử dụng 'vòng lặp for' cho y làm cách hiểu bên trong Chìa khóa rút ra
|