Lọc các số chẵn trong danh sách Python bằng chức năng lọc

Filter[] là một hàm tích hợp trong Python. Chức năng bộ lọc có thể được áp dụng cho một lần lặp như danh sách hoặc từ điển và tạo một trình lặp mới. Trình vòng lặp mới này có thể lọc ra một số phần tử cụ thể dựa trên điều kiện mà bạn cung cấp một cách rất hiệu quả.  

Ghi chú. Một iterable trong Python là một đối tượng mà bạn có thể lặp đi lặp lại. Có thể lặp qua một iterable và trả về các mục trong đó

Có nhiều cách để lọc các phần tử từ danh sách. Điều này bao gồm sử dụng vòng lặp for đơn giản, hiểu danh sách, vòng lặp for nâng cao, v.v. Tuy nhiên, phương pháp lọc cung cấp một cách đơn giản và hiệu quả để lọc ra các phần tử và thậm chí cần ít dòng mã hơn để thực hiện chức năng tương tự. Điều này rất hữu ích, đặc biệt khi bạn đang làm việc với các tập dữ liệu lớn.  

Hãy xem xét kịch bản đơn giản này. Giả sử, bạn có một danh sách sách chứa thông tin chi tiết của hơn 1000 cuốn sách. Bây giờ, nếu bạn cố gắng sử dụng một chức năng toàn diện để lọc ra những cuốn sách cụ thể, quá trình này có thể khá triệt để về mặt sử dụng tài nguyên. Danh sách toàn diện sẽ tạo một danh sách mới và khi nó hoàn thành toàn bộ hoạt động, bạn sẽ có hai danh sách trong bộ nhớ của chúng tôi. Và khi danh sách quá lớn, điều này có thể gây ra vấn đề lớn. Hơn nữa, nó làm tăng thời gian chạy tổng thể của quá trình xử lý.  

Trái ngược với điều này, hàm filter[] sẽ đơn giản tạo một đối tượng không phải là bản sao của danh sách mà sẽ là tham chiếu đến danh sách gốc, cùng với hàm đã được cung cấp để lọc và các chỉ mục có . Không cần phải nói, điều này chiếm ít bộ nhớ hơn và thực thi nhanh hơn so với việc hiểu danh sách.  

Khóa đào tạo Python

Tìm hiểu về thao tác dữ liệu trong Python Khám phá khóa học

Cú pháp cho bộ lọc trong Python

Cú pháp của hàm filter[] trong Python là -

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

Hai tham số như sau -

  1. Chức năng - Nó hoạt động trên từng phần tử của iterable và kiểm tra xem giá trị trả về là đúng hay sai. Chuỗi đầu ra sẽ chứa tất cả các phần tử của iterable mà hàm đã trả về True. Nó cũng có thể được đề cập là Không. Trong trường hợp như vậy, chuỗi đầu ra sẽ chỉ chứa tất cả các phần tử thỏa mãn điều kiện boolean Đúng
  2. Có thể lặp lại - Đó là có thể lặp lại hoặc danh sách các mục mà quá trình lọc sẽ được thực hiện trên đó. Một iterable có thể là một tập hợp, danh sách, tuple, từ điển, v.v.

Phương thức filter[] trong Python sẽ trả về một iterator chứa tất cả các phần tử của iterable ban đầu đã vượt qua kiểm tra hàm

cũng đọc. Khái niệm cơ bản về vòng lặp Python

Các ứng dụng của Bộ lọc trong Python

Phương thức filter[] trong Python có thể được sử dụng cho nhiều mục đích khác nhau. Nó là sự thay thế hoàn hảo cho việc hiểu danh sách về bộ nhớ và thời gian thực hiện. Chức năng bộ lọc có thể được sử dụng cùng với các chức năng lambda để phân tách hoặc lọc các phần tử dựa trên chức năng kiểm tra. Trên thực tế, thay vì hàm lambda, bạn cũng có thể sử dụng hàm bình thường/truyền thống.  

Ví dụ: nếu bạn muốn lọc ra các phần tử chẵn và lẻ từ danh sách các số thành hai tập hợp khác nhau, bạn có thể sử dụng chức năng bộ lọc. Bạn thậm chí có thể sử dụng nó với danh sách từ điển để lọc từ điển dựa trên khóa của chúng.  

Ví dụ về Bộ lọc trong Python

Bây giờ, hãy xem một số ví dụ minh họa các cách khác nhau mà bạn có thể sử dụng phương thức lọc trong Python. Bạn có thể thử phương pháp này trên các lần lặp khác nhau bằng cách sử dụng hàm lambda, hàm truyền thống và không chỉ định hàm

ví dụ 1. Sử dụng bộ lọc với một chức năng đơn giản trên danh sách

Giả sử bạn có một danh sách các chữ cái và chúng tôi muốn lọc ra các nguyên âm bằng bộ lọc trong danh sách đó. Bạn có thể tạo một hàm đơn giản để kiểm tra xem một chữ cái làm đối số cho hàm đó có phải là nguyên âm hay không và trả về Đúng hoặc Sai dựa trên kiểm tra. Cũng có thể sử dụng phương thức này làm đối số cho chức năng lọc cùng với danh sách các chữ cái. Bây giờ, hãy thử nó

Chương trình -

kiểm tra chắc chắn [thư]
list_of_vowels = ['a', 'e', ​​'i', 'o', 'u']
nếu chữ cái trong list_of_vowels
trả về Đúng
khác
trả về Sai
chữ cái = ['u', 'a', 'q', 'c', 'i', 'd', 'z', 'p', 'e']
filter_object = bộ lọc[kiểm tra, chữ cái]
print["Kiểu đối tượng trả về là. ", gõ[filtered_object]]
filtered_list = danh sách[filtered_object]
print["Danh sách các nguyên âm là. ", đã lọc_list]

Đầu ra -

khóa học miễn phí. Lập trình với Python

Tìm hiểu kiến ​​thức cơ bản về lập trình với Python Đăng ký ngay

ví dụ 2. Sử dụng bộ lọc với hàm Lambda trên danh sách

Trong ví dụ này, bạn sẽ sử dụng hàm lọc trên danh sách số để tách các số thành hai danh sách số lẻ và số chẵn. Ở đây, sử dụng hàm lambda thay vì hàm truyền thống trong tham số

Chương trình -

số = [5, 10, 23, 64, 42, 53, 93, 2, 0, -14, 6, -22, -13]

#Lọc tất cả các số lẻ từ danh sách

lẻ = bộ lọc [lambda p. p%2. = 0, số]

#Lọc tất cả các số chẵn từ danh sách

thậm chí = bộ lọc [lambda p. p%2 == 0, số]

print["Danh sách các số lẻ là. ", danh sách [lẻ]]

print["Danh sách các số chẵn là. ", danh sách [thậm chí]]

Đầu ra -

ví dụ 3. Sử dụng bộ lọc không có tham số chức năng

Nếu bạn sử dụng Không làm đối số chức năng, phương thức bộ lọc sẽ xóa bất kỳ phần tử nào khỏi lần lặp mà nó cho là sai. Một số ví dụ về các phần tử như vậy là chuỗi rỗng, 0, dấu ngoặc nhọn, boolean Sai, v.v. Hãy xem ví dụ dưới đây

Chương trình -

my_list = [5, -23, "", Đúng, Sai, 0, 0. 0, {}, []]

filter_object = bộ lọc[Không có, my_list]

cho phần tử trong filter_object

in [yếu tố]

Đầu ra -

Giải trình -

Hàm lọc chỉ trả về những phần tử mà nó cho là đúng. Trong ví dụ này, tất cả các phần tử giả như dấu ngoặc rỗng, giá trị 0, chuỗi trống, v.v. sẽ trả về sai. Do đó, chúng không được lọc ra

Ví dụ 4. Sử dụng bộ lọc với danh sách từ điển

Trong ví dụ này, bạn sẽ tạo một danh sách các từ điển sẽ lưu trữ thông tin chi tiết về sách như tên tác giả, xuất bản, giá cả, v.v. Mục đích là cố gắng lọc ra các chi tiết của những cuốn sách đắt hơn giá cố định. Hãy xem ví dụ dưới đây

Chương trình -

sách = [

{"Chức vụ". "Thiên thần và ác quỷ", "Tác giả". "Dan Brown", "Giá". 500},

{"Chức vụ". "Cô gái mất tích", "Tác giả". "Gillian Flynn", "Giá". 730},

{"Chức vụ". "Bệnh nhân im lặng", "Tác giả". "Alex Michaelidis", "Giá". 945},

{"Chức vụ". "Trước khi tôi đi ngủ", "Tác giả". "S. J Watson", "Giá". 400}

]

chức năng xác định [sách]

nếu sách["Giá"] > 500

trả về Đúng

khác

trả về Sai

filter_object = bộ lọc[func, sách]

cho d trong filter_object

in[dict[d]["Tiêu đề"]]

Đầu ra -

Giải trình -

Trong chương trình trên, bạn đã tạo một danh sách từ điển chứa các thông tin chi tiết về sách như tên sách, tác giả, giá bán, v.v. Bạn cũng đã xác định một hàm lấy từ điển làm đối số và trả về True nếu giá của cuốn sách trong từ điển đó lớn hơn 500, ngược lại là False. Sau đó, bạn đã sử dụng bộ lọc trong danh sách từ điển bằng chức năng đã được xác định trước đó. Đối tượng bộ lọc trả về đã được lặp lại để chỉ in tiêu đề của những cuốn sách được bộ lọc trả về. Rõ ràng là chỉ những tựa sách nào có giá lớn hơn 500 mới được trả lại.

Mong muốn chuyển sang lĩnh vực lập trình?

kết thúc

Trong hướng dẫn chi tiết về bộ lọc trong Python này, bạn đã tìm hiểu những kiến ​​thức cơ bản về phương thức bộ lọc được sử dụng để lọc các phần tử từ một lần lặp dựa trên một hàm. Bài viết này cũng thảo luận về một số ứng dụng điển hình của phương thức lọc cùng với cú pháp và các tham số. Sau đó, bạn tiếp tục và khám phá một số ví dụ hữu ích trong đó một người sẽ sử dụng phương thức lọc với hàm lambda, hàm tùy chỉnh và thậm chí với tùy chọn Không có trên các lần lặp khác nhau như danh sách, danh sách từ điển, v.v.

Nếu bạn đang tìm kiếm cách hiệu quả nhất để phát triển web trong ngành công nghệ này, thì một cách tuyệt vời để bắt đầu là đăng ký Khóa đào tạo Python toàn diện. Với khóa học này, bạn sẽ đạt được tất cả các kỹ năng thực tế và sẵn sàng cho công việc mà bạn cần để có thể được tuyển dụng và nắm bắt những cơ hội tốt nhất cho bạn trong lĩnh vực này.  

Hy vọng rằng bây giờ bạn đã có kinh nghiệm thực hành làm việc với phương thức Filter trong Python. Bạn có câu hỏi nào cho chúng tôi không?

Thông tin về các Tác giả

Ravikiran AS

Ravikiran A S làm việc với Simplilearn với tư cách là Nhà phân tích nghiên cứu. Anh ấy là một người đam mê nhiệt tình, luôn săn lùng những công nghệ mới nhất. Anh ấy thành thạo Ngôn ngữ lập trình Java, Dữ liệu lớn và các Khung dữ liệu lớn mạnh mẽ như Apache Hadoop và Apache Spark

Chủ Đề