Computer >> Máy Tính >  >> Lập trình >> Python

Bộ lọc Python:Hướng dẫn từng bước

Bộ lọc Python filter() được sử dụng để lọc danh sách, bộ và bộ giá trị. filter() tuân theo bất kỳ tiêu chí được cung cấp nào để lọc một đối tượng có thể lặp lại và trả về kết quả đã lọc.


Khi bạn đang lập trình, bạn có thể có một danh sách các giá trị mà bạn muốn lọc theo một cách nào đó. Ví dụ:bạn có thể có một danh sách các đơn đặt hàng bánh quy và chỉ muốn trả lại những đơn đặt hàng liên quan đến sô cô la, do một đầu bếp cụ thể xử lý tại cửa hàng bánh quy của bạn.

Đó là nơi chứa filter() trong Python có trong phương thức. filter() phương pháp này có thể được sử dụng để lọc một danh sách cụ thể dựa trên một bộ tiêu chí được xác định trước và trả về một giá trị có thể lặp lại với dữ liệu đã lọc.

Trong hướng dẫn này, chúng ta sẽ thảo luận về filter() và cách bạn có thể sử dụng nó trong mã của mình. Chúng ta cũng sẽ xem qua một số ví dụ về hàm trong mã Python.

Bộ lọc Python

Danh sách là một kiểu dữ liệu trong Python có thể được sử dụng để lưu trữ nhiều giá trị với một chủ đề chung. Ví dụ:bạn có thể sử dụng danh sách để lưu trữ tất cả quần áo mà một cửa hàng thời trang địa phương đang bán hoặc để lưu trữ danh sách các tên ngôn ngữ lập trình.

Thông thường, khi làm việc với các danh sách, bạn sẽ muốn lọc ra danh sách dựa trên một bộ tiêu chí. Ví dụ:bạn có thể đang điều hành một rạp chiếu phim và muốn biết có bao nhiêu người dưới 18 tuổi đến xem phim tại cụm rạp của bạn.

filter() , một hàm tích hợp, có thể được sử dụng để lọc ra một danh sách và trả về một trình lặp. Đây là cú pháp cho filter() phương pháp:

filter(function, iterable_object)

Bộ lọc filter() phương thức nhận hai tham số:

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

  • chức năng là mã được chạy trên từng mục trong tệp có thể lặp lại mà bạn chỉ định (bắt buộc). Hàm sẽ kiểm tra xem giá trị có thể lặp lại trả về True hay False.
  • iterable_object là đối tượng bạn muốn lọc (bắt buộc).

Đối tượng có thể lặp lại mà bạn chỉ định có thể là bất kỳ đối tượng nào có thể lặp lại, chẳng hạn như các danh sách lists , setstuples .

Ví dụ về bộ lọc Python

Hãy xem qua một ví dụ để chứng minh cách sử dụng phương pháp này.

Giả sử rằng bạn đang vận hành quầy tạp chí và bạn muốn kiểm tra xem bạn có cần đặt thêm hàng tồn kho mới hay không. Nếu bạn có ít hơn 20 ấn bản của bất kỳ tạp chí nào, bạn cần phải đặt hàng mới; nếu bạn có hơn 20 ấn bản tạp chí, bạn không cần phải đặt hàng mới. Bạn có một danh sách các số lưu trữ số lượng tạp chí bạn có.

Để kiểm tra xem bạn có cần đặt hàng tạp chí nào không, bạn có thể sử dụng mã sau:

quantities = [25, 49, 21, 17, 14, 28]

def checkQuantities(mags):
	if mags < 20:
		return True
	else:
		return False

filtered_mags = filter(checkQuantities, quantities)
print(list(filtered_mags))

Mã của chúng tôi trả về:[17, 14]

Hãy chia nhỏ mã của chúng ta. Trên dòng đầu tiên, chúng tôi xác định một biến được gọi là quantities nơi lưu trữ bao nhiêu ấn bản của mỗi tạp chí mà chúng tôi có trong kho của mình.

Sau đó, chúng tôi xác định một hàm có tên là checkQuantities điều này sẽ kiểm tra xem chúng tôi có ít hơn 20 ấn bản của một tạp chí cụ thể trong kho hay không. Nếu chúng tôi có ít hơn 20 ấn bản, checkQuantities của chúng tôi hàm trả về giá trị True; nếu không, nó sẽ trả về False.

Tiếp theo, chúng tôi sử dụng filter() và chỉ định checkQuantities như chức năng của chúng tôi và quantities là đối tượng có thể lặp lại của chúng tôi. Điều này cho biết filter() của chúng tôi phương thức để thực thi checkQuantities trên mọi mặt hàng trong mảng số lượng.

Sau đó, chúng tôi in ra kết quả của filter() và sử dụng list() để chuyển đổi nó thành một danh sách. Điều này quan trọng vì filter() trả về một đối tượng được lọc, không phải là một danh sách. Vì vậy, nếu chúng ta muốn xem dữ liệu của mình, chúng ta cần chuyển nó thành một danh sách.

Như bạn có thể thấy, mã của chúng tôi trả về hai giá trị:17 và 14. Mỗi giá trị này dưới 20, có nghĩa là chương trình của chúng tôi đã hoạt động như dự kiến.

Hãy xem qua một ví dụ khác để cho thấy cách hoạt động của phương pháp này. Giả sử chúng tôi là một giáo viên dạy khiêu vũ và chúng tôi muốn biết độ tuổi của tất cả mọi người trong lớp từ bảy đến mười, bao gồm cả bảy và mười. Chúng tôi có thể sử dụng mã sau để lấy dữ liệu này:

student_ages = [7, 9, 8, 10, 11, 11, 8, 9, 12]

def checkAges(ages):
	if ages >= 7 and ages <= 10:
		return True
	else:
		return False

filtered_ages = filter(checkAges, student_ages)
print(list(filtered_ages))

Mã của chúng tôi trả về:[7, 9, 8, 10, 8, 9] . Như bạn có thể thấy, chương trình của chúng tôi đã lọc ra những học sinh ở độ tuổi từ bảy đến mười từ các yếu tố danh sách của chúng tôi, bao gồm cả bảy và mười. Danh sách kết quả chứa dữ liệu đã lọc của chúng tôi.

Bộ lọc Python với Lambda

Để làm cho hoạt động bộ lọc của chúng tôi hiệu quả hơn, chúng tôi có thể sử dụng hàm Lambda bản đồ danh sách. Lambda là một hàm đặc biệt được định nghĩa mà không có tên và có thể được sử dụng để viết các hàm ẩn danh một dòng ngắn trong Python.

Vì vậy, hãy lấy ví dụ về số lượng tạp chí của chúng tôi ở trên. Trong ví dụ đó, chúng tôi đã tạo một hàm kiểm tra xem chúng tôi có ít hơn 20 ấn bản tạp chí trong kho hay không và đã sử dụng filter() để thực hiện chức năng đó trên danh sách tạp chí của chúng tôi. Sau đó, chương trình của chúng tôi trả về danh sách mọi tạp chí mà chúng tôi có ít hơn 20 ấn bản.

Chúng ta có thể sử dụng một hàm Lambda để thực hiện hành động tương tự nhưng hiệu quả hơn. Đây là mã chúng tôi có thể sử dụng:

quantities = [25, 49, 21, 17, 14, 28]

filtered_mags = filter(lambda mag: mag < 20, quantities)
print(list(filtered_mags))

Mã của chúng tôi trả về:[17, 14] .

Như bạn có thể thấy, đầu ra của chúng tôi giống nhau, nhưng mã của chúng tôi ngắn hơn đáng kể. Thay vì xác định toàn bộ một hàm, chúng tôi đã sử dụng Lambda để xác định một hàm một dòng.

Hàm một dòng này kiểm tra xem chúng tôi có ít hơn 20 bản sao của tạp chí trong kho hay không và trả về True cho filter() trình lặp nếu đó là trường hợp. Sau khi thực thi, chương trình của chúng tôi trả về một danh sách có hai giá trị:17 và 14.

Kết luận

Bộ lọc Python filter() hàm có thể được sử dụng để lọc một đối tượng có thể lặp lại dựa trên một tập hợp các tiêu chí được xác định trước và trả về một đối tượng có thể lặp lại đã lọc. Phương pháp này có thể hữu ích nếu bạn có một danh sách dữ liệu mà từ đó bạn chỉ muốn truy xuất các giá trị đáp ứng các tiêu chí nhất định.

Trong hướng dẫn này, chúng tôi đã thảo luận về cú pháp cho filter() và cách nó có thể được sử dụng trong Python. Chúng tôi đã khám phá một vài ví dụ về filter() trong hành động, sau đó chúng tôi xem xét cách thức filter() có thể được sử dụng với một hàm Lambda của Python để làm cho mã của chúng tôi hiệu quả hơn.

Giờ đây, bạn đã được trang bị thông tin cần thiết để sử dụng filter() như một chuyên gia Python!