Có chức năng lọc trong python không?

Mặc dù Python là ngôn ngữ hướng đối tượng, nhưng nó vẫn cung cấp các chức năng cung cấp phong cách lập trình chức năng. Trong một bài viết trước, chúng ta đã thảo luận về một trong những hàm đó, map. Trong bài viết này, chúng ta sẽ thảo luận về một hàm có sẵn khác của Python, hàm lọc

Trong hướng dẫn này, chúng ta sẽ tìm hiểu chức năng lọc trong Python là gì và cách sử dụng nó

Bài viết về chức năng bản đồ

Hàm bản đồ trong Python

Tìm hiểu cách sử dụng hàm map trong Python

hướng tới khoa học dữ liệu. com

sử dụng vòng lặp for

Giả sử chúng ta muốn tạo danh sách bằng cách sử dụng danh sách mà chúng ta đã có. Nhưng chúng tôi muốn danh sách mới của mình chỉ chứa các phần tử thỏa mãn một điều kiện nhất định. Ví dụ: chúng tôi có một danh sách các số và chúng tôi muốn tạo một danh sách mới chỉ chứa các số chẵn từ danh sách của chúng tôi. Chúng ta có thể hoàn thành nhiệm vụ này với vòng lặp for như sau

Chúng tôi có một danh sách các số, list_of_nums, chứa các số 1, 2, 3, 4, 5 và 6. Chúng tôi muốn tạo một danh sách số mới, list_of_even_nums, chỉ chứa các số chẵn từ list_of_nums. Vì vậy, chúng tôi đã tạo một hàm, is_even, nhận đầu vào và trả về True nếu đầu vào đó là chẵn hoặc Sai nếu không. Sau đó, chúng tôi đã tạo một vòng lặp for lặp qua list_of_nums và kiểm tra xem mỗi số trong danh sách đó có chẵn hay không bằng cách chuyển phần tử đó vào hàm is_even. Nếu hàm is_even trả về True, số đó sẽ được thêm vào list_of_even_nums. Nếu is_even trả về Sai, thì số đó không được thêm vào list_of_even_nums

Một cách khác để thực hiện điều này là sử dụng chức năng bộ lọc Python tích hợp

Hai hàm thú vị cần biết trong Python

Tìm hiểu cách tạo bảng có lập bảng và hiển thị thanh tiến trình với tqdm trong Python

hướng tới khoa học dữ liệu. com

chức năng lọc

Hàm lọc có hai đối số. một hàm trả về True hoặc False [kiểm tra một điều kiện cụ thể] và đối tượng có thể lặp mà chúng tôi muốn áp dụng nó [chẳng hạn như một danh sách trong trường hợp này]

bộ lọc [chức năng, có thể lặp lại]

Hàm bộ lọc lấy từng phần tử từ danh sách của chúng tôi [hoặc bất kỳ phần tử nào có thể lặp lại mà chúng tôi chuyển vào] và chuyển nó vào hàm mà chúng tôi cung cấp cho nó. Nếu hàm có phần tử cụ thể đó làm đối số trả về True, thì hàm bộ lọc sẽ thêm giá trị đó vào đối tượng bộ lọc [sau đó chúng ta có thể tạo một danh sách giống như chúng ta đã làm với đối tượng bản đồ được hàm bản đồ trả về]. Nếu hàm trả về False, thì phần tử đó sẽ không được thêm vào đối tượng bộ lọc của chúng tôi. Nói cách khác, chúng ta có thể coi chức năng lọc là lọc danh sách hoặc chuỗi của chúng ta dựa trên một số điều kiện

[x,y,z] → bộ lọc → [x [nếu f[x] trả về True], y [nếu f[y] trả về True], z [nếu f[z] trả về True]]

Nếu chúng ta có một danh sách [x,y,z], thì nếu f[x] trả về True, x sẽ được thêm vào đối tượng bộ lọc. Nếu nó trả về False, nó sẽ không được thêm vào đối tượng bộ lọc. f là hàm chúng ta chuyển vào hàm lọc. Nếu f[y] trả về True, nó sẽ được thêm vào đối tượng bộ lọc. Và như thế…

Một lần nữa, chức năng bộ lọc sẽ trả về một đối tượng bộ lọc, đó là một trình vòng lặp. Nếu chúng ta muốn tạo một danh sách từ đối tượng bộ lọc này, chúng ta cần chuyển đối tượng bộ lọc của mình sang hàm danh sách tích hợp [giống như chúng ta đã làm với đối tượng bản đồ] như sau

danh sách [bộ lọc [chức năng, trình tự]]

sử dụng chức năng lọc

Sau đó chúng ta có thể sử dụng chức năng lọc để tạo danh sách trên như sau

Hàm bộ lọc lấy phần tử đầu tiên từ list_of_nums, là 1 và chuyển nó làm đối số cho hàm is_even [vì chúng ta đã chuyển hàm đó làm đối số đầu tiên cho hàm bộ lọc]. Hàm is_even sau đó trả về False, vì 1 không chẵn nên 1 không được thêm vào đối tượng bộ lọc của chúng ta. Sau đó, hàm lọc lấy phần tử thứ hai từ list_of_nums, là 2 và chuyển nó làm đối số cho hàm is_even. Hàm is_even trả về True, vì 2 là số chẵn và do đó 2 được thêm vào đối tượng bộ lọc của chúng ta. Sau khi nó đi qua phần còn lại của các phần tử trong list_of_nums và phần còn lại của các số chẵn được thêm vào đối tượng bộ lọc của chúng ta, hàm list sẽ đưa đối tượng bộ lọc này vào một danh sách và danh sách đó được gán cho biến list_of_even_nums

sử dụng biểu thức lambda

Thay vào đó, chúng ta có thể rút ngắn mã của mình hơn nữa bằng cách chuyển biểu thức lambda làm hàm của chúng ta

Tìm hiểu về hàm lambda tại đây

Biểu thức Lambda trong Python

Cách viết hàm ẩn danh trong python

hướng tới khoa học dữ liệu. com

hiểu danh sách vs. bản đồ và bộ lọc

Nếu chúng tôi nhớ lại, khả năng hiểu danh sách được sử dụng để tạo danh sách từ các trình tự khác, bằng cách áp dụng một số thao tác cho các phần tử, bằng cách lọc qua các phần tử hoặc kết hợp cả hai. Nói cách khác, khả năng hiểu danh sách có thể có cùng chức năng như chức năng lọc và bản đồ tích hợp. Thao tác áp dụng cho từng phần tử tương tự như hàm map và nếu chúng ta thêm điều kiện cho phần tử nào được thêm vào danh sách trong phần hiểu danh sách thì thao tác đó tương tự như hàm bộ lọc. Ngoài ra, biểu thức được thêm vào khi bắt đầu hiểu danh sách tương tự như biểu thức lambda có thể được sử dụng bên trong các hàm bản đồ và bộ lọc

thí dụ

Đây là cách hiểu danh sách cộng bình phương các phần tử từ 0 đến 9, chỉ khi phần tử đó chẵn

[x**2 for x in range[10] if x%2==0]# [0,4,16,36,64]

Chúng ta có thể sử dụng các hàm bản đồ và bộ lọc, cùng với các hàm lambda, để thực hiện điều tương tự

list[map[lambda x:x**2, filter[lambda x:x%2==0, range[10]]]]# [0,4,16,36,64]

Hàm được truyền vào hàm bản đồ là một biểu thức lambda nhận đầu vào x và trả về bình phương của nó. Danh sách được chuyển vào hàm bản đồ là danh sách được lọc chứa các phần tử chẵn từ 0 đến 9

Nếu bạn thích đọc những câu chuyện như thế này và muốn hỗ trợ tôi với tư cách là một nhà văn, hãy cân nhắc đăng ký để trở thành thành viên Medium. Đó là 5 đô la một tháng, cho phép bạn truy cập không giới hạn vào các câu chuyện trên Phương tiện. Nếu bạn đăng ký bằng liên kết của tôi, tôi sẽ kiếm được một khoản hoa hồng nhỏ

Chủ Đề