Lambda, bản đồ và bộ lọc trong Python

Trong Python, map[] và filter[] là các hàm tích hợp được sử dụng để thực thi một hàm cho mọi giá trị trong danh sách. Cả hai hàm dựng sẵn đều thực thi hàm đã chỉ định với phần tử danh sách làm đối số. Cả chức năng bản đồ và bộ lọc đều trả về một danh sách. Chúng ta hãy xem xét từng chức năng

Cú pháp chung để sử dụng hàm map[] như sau

cú pháp

bản đồ[tên_hàm, thứ_tự_dữ_liệu]

Ở đây, hàm map chấp nhận hai đối số, đối số đầu tiên là chức năng sẽ được thực thi và đối số thứ hai là chuỗi các phần tử mà các chức năng đã chỉ định phải được thực thi

Những điểm cần lưu ý

  • Đối số đầu tiên phải chỉ là tên hàm không có dấu ngoặc đơn

Hãy xem xét mã ví dụ sau

def square[num]:
    return num ** 2


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
squares = list[map[square, numbers]]
print[squares]

Trong đoạn mã ví dụ trên, hàm square[] được thực thi lặp đi lặp lại chuyển mọi phần tử từ danh sách số. Cuối cùng, nó trả về danh sách tất cả các giá trị trả về

Khi chúng tôi chạy mã ví dụ trên, nó sẽ tạo ra kết quả sau

Cú pháp chung để sử dụng hàm filter[] như sau

cú pháp

bộ lọc [tên_hàm, thứ_tự_dữ_liệu]

Ở đây, hàm lọc chấp nhận hai đối số, đối số đầu tiên là hàm sẽ được thực thi và đối số thứ hai là chuỗi các phần tử mà các hàm được chỉ định phải được thực thi

Những điểm cần lưu ý

  • Đối số đầu tiên phải là một hàm chỉ trả về giá trị boolean [Đúng hoặc Sai]
  • Đối số đầu tiên phải chỉ là tên hàm không có dấu ngoặc đơn
  • Hàm bộ lọc trả về một danh sách bao gồm các đối số được truyền cho hàm mà nó trả về True

Hãy xem xét mã ví dụ sau

def find_even[num]:
    return num % 2 == 0


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]

Trong mã ví dụ trên, hàm find_even[ ] được thực thi lặp đi lặp lại chuyển mọi phần tử từ danh sách số. Cuối cùng, nó trả về danh sách chứa tất cả các đối số mà hàm trả về True

Khi chúng tôi chạy mã ví dụ trên, nó sẽ tạo ra kết quả sau

Hầu hết các lần biểu thức lambda được sử dụng với các hàm tích hợp map[] và filter[]. Chúng ta hãy xem một ví dụ về biểu thức lambda được sử dụng với các hàm tích hợp map[] và filter[]

Hàm lambda là một hàm ẩn danh với cú pháp

def square[x]:
return x**2
9. Biểu thức được thực thi trên các đối số và kết quả được trả về. Mỗi chức năng lambda bao gồm 3 phần

  • từ khóa lambda
  • Một biến ràng buộc x
  • Phần thân của biểu thức

Cú pháp — Biến đơn

Một ví dụ đơn giản.

sum_of_square = lambda x, y: x**2 + y**2
0 tương đương với định nghĩa hàm Python tiêu chuẩn như sau

def square[x]:
return x**2

Các trường hợp sử dụng như

sum_of_square = lambda x, y: x**2 + y**2
1 sẽ cho kết quả như nhau trong cả hai trường hợp

Cú pháp — Nhiều biến

Ví dụ lấy tổng bình phương 2 biến

sum_of_square = lambda x, y: x**2 + y**2

Đặc trưng

Như có thể thấy trong các ví dụ trước, hàm lambda có các đặc điểm sau

  1. Nó được viết dưới dạng một dòng biểu thức
  2. Nó không chứa các câu lệnh trong phần thân
  3. Nó không hỗ trợ chú thích kiểu hoặc khai báo biến bổ sung

Tại sao & Khi nào nên sử dụng Hàm Lambda?

  1. Trong hầu hết các trường hợp, hàm lambda giảm số lượng dòng so với định nghĩa hàm Python thông thường bằng cách sử dụng từ khóa
    sum_of_square = lambda x, y: x**2 + y**2
    0
  2. Chúng rất hữu ích khi tạm thời cần một chức năng trong một khoảng thời gian ngắn, thường được sử dụng bên trong một chức năng khác, chẳng hạn như ________ 31 , ________ 32 , ________ 33 và ________ 34

1. Lọc

Hàm lọc có dạng

sum_of_square = lambda x, y: x**2 + y**2
5. Nó được sử dụng để lọc các phần tử thỏa mãn các điều kiện nhất định từ một đối tượng có thể lặp lại, chẳng hạn như danh sách và tập hợp. Đối số
sum_of_square = lambda x, y: x**2 + y**2
6 thường được triển khai bằng hàm lambda

def find_even[num]:
    return num % 2 == 0


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
1

2. Bản đồ

Hàm map có định dạng tương tự như

sum_of_square = lambda x, y: x**2 + y**2
1 và được sử dụng để thực hiện thao tác thống nhất cho tất cả các phần tử trong một chuỗi

def find_even[num]:
    return num % 2 == 0


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
3

3. Giảm

cú pháp.

sum_of_square = lambda x, y: x**2 + y**2
8

Hàm

sum_of_square = lambda x, y: x**2 + y**2
4, giống như
sum_of_square = lambda x, y: x**2 + y**2
2, cũng được sử dụng để thực hiện thao tác
sum_of_square = lambda x, y: x**2 + y**2
6 trên mỗi phần tử trong
def find_even[num]:
    return num % 2 == 0


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
12. Tuy nhiên, nó hoạt động hơi khác một chút ở chỗ thao tác được thực hiện giữa các phần tử, thay vì được thực hiện trên từng phần tử riêng biệt

Ví dụ:

sum_of_square = lambda x, y: x**2 + y**2
2 được sử dụng nếu bạn muốn nhân đôi từng phần tử, nhưng
sum_of_square = lambda x, y: x**2 + y**2
4 được sử dụng nếu bạn muốn lấy tổng của tất cả các phần tử trong dãy

def square[x]:
return x**2
1

4. Các trường hợp sử dụng khác

Ví dụ: nếu chúng tôi có một danh sách giá và khối lượng được lấy từ sổ đặt hàng như sau.

def find_even[num]:
    return num % 2 == 0


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
15 , mỗi phần tử trong danh sách đại diện cho một cặp giá-khối lượng. Để sắp xếp danh sách, chúng ta có thể sử dụng các hàm lambda để chỉ định khóa được sử dụng để sắp xếp

def square[x]:
return x**2
3

Lưu ý cuối cùng

Bên trong, cả hai chức năng

def find_even[num]:
    return num % 2 == 0


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
16 và
sum_of_square = lambda x, y: x**2 + y**2
0 đều hoạt động giống hệt nhau. Từ khóa
def find_even[num]:
    return num % 2 == 0


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
18 hiển thị phiên bản mã byte Python có thể đọc được cho phép kiểm tra hướng dẫn. Đánh giá cả hai phiên bản của hàm
def find_even[num]:
    return num % 2 == 0


numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
even_list = list[filter[find_even, numbers]]
print[even_list]
19 được định nghĩa ở đầu bài viết này

def square[x]:
return x**2
8

Các quy trình được thực hiện bởi cả hai chức năng được quan sát là hoàn toàn giống nhau. Vì vậy, không có sự khác biệt thực sự trong cách họ thực hiện

Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Theo dõi chúng tôi trên Twitter và LinkedIn. Kiểm tra Sự bất hòa trong cộng đồng của chúng tôi và tham gia Tập thể tài năng của chúng tôi

Bản đồ và bộ lọc trong Python là gì?

Trong khi map[] chuyển từng phần tử trong iterable thông qua một hàm và trả về kết quả của tất cả các phần tử đã đi qua hàm, filter[] trước hết, yêu cầu hàm trả về các giá trị boolean [true hoặc false] rồi chuyển từng phần tử

Sự khác biệt giữa bản đồ [] và bộ lọc [] trong Python là gì?

Bản đồ[]. Thực hiện thao tác tương tự trên tất cả các phần tử trong một lần lặp. Một ví dụ đang thực hiện chuyển đổi nhật ký trên từng phần tử. Lọc[]. Lọc một tập hợp con các phần tử đáp ứng [các] điều kiện nhất định. Một ví dụ là lọc ra các câu có chứa một chuỗi cụ thể

Bộ lọc và bản đồ có giống nhau không?

Map lấy tất cả các đối tượng trong một danh sách và cho phép bạn áp dụng một hàm cho nó trong khi Filter lấy tất cả các đối tượng trong danh sách và chạy nó thông qua một hàm để tạo một danh sách mới với tất cả các đối tượng trả về True trong hàm đó

Bộ lọc lambda là gì?

Hàm filter[] thường được dùng để xử lý các bộ sưu tập . Chúng ta có thể sử dụng nó để tạo danh sách công nhân đã kiếm được hơn 90 điểm, chỉ định vị từ là lambda.

Chủ Đề