Bài 53. HÀM KHÔNG TÊN LAMBDA P2 (HÀM ĐIỀU KIỆN, LAMBDA CHỒNG)

I. Hàm điều kiện trong Lambda

Giả sử ta có hàm if với cú pháp như sau:
if a:
   b
else:
  c
Ta có thể dùng hàm lambda với cú pháp:
TH1: b if a else c
TH2: a and b or c
Trong đó, chúng tôi khuyên các bạn nên dùng TH1

Ví dụ 1:
Các câu lệnh:

# Khởi tạo 1 hàm so sánh 2 giá trị a và b
compare_value = lambda a, b: print(a) if a > b else print(b)
# Truyền vào hàm so sánh một số cặp giá trị và in ra
compare_value(6,9)
compare_value(9,6)
compare_value(2,4)

Kết quả trả ra:
9
9
4

Ví dụ 2:
Các câu lệnh:

# Khởi tạo tìm giá trị vừa chia hết cho 2 vừa chia hết cho 3, đúng trả ra Right, sai trả ra Wrong
divide_2_3 = lambda x: print(“Right”) if x%2==0 and x%3==0 else print(“Wrong”)
#Truyền vào hàm các giá trị và kiểm tra 
divide_2_3(3)
divide_2_3(6)
divide_2_3(9)

Kết quả trả ra:
Wrong
Right
Wrong

Ngoài ra, ta có thể sử dụng cấu trúc khác cho hàm tìm số có ước là 2 và 3, như sau:
divide_2_3 = lambda x: (print(“Right”) if x%2==0) x%3==0 else print(“Wrong”)
divide_2_3(3)
divide_2_3(6)
divide_2_3(9)
Với cấu trúc này, ta lồng 2 câu điều kiện vào nhau

Ví dụ 3 (Vẫn ví dụ 2, nhưng ta dùng hàm phủ định NOT):
Các câu lệnh:

# Khởi tạo tìm giá trị vừa chia hết cho 2 vừa chia hết cho 3, đúng trả ra Right, sai trả ra Wrong
divide_2_3 = lambda x: print(“Right”) if not ( x%2 and x%3) else print(“Wrong”)
#Truyền vào hàm các giá trị và kiểm tra 
divide_2_3(6)

Kết quả trả ra:
Wrong
Right
Wrong

II. Lambda chồng Lambda

Việc sử dụng cấu trúc này khá phức tạp và không được khuyến khích

Ví dụ 4:
Các câu lệnh:

# Khởi tạo hàm sử dụng toán tử + cho 2 giá trị:
func_plus = lambda x1: (lambda x2: print(x1 + x2))
#Truyền vào hàm các giá trị x1 và x2
func_plus(3)(4)
func_plus(“love”)(“python”)

Kết quả trả ra:
7
lovepython

III. Kết Luận

Như vậy, chúng tôi đã tiếp tục giới thiệu tới các bạn các khái niệm cơ bản của Hàm Lambda trong Python. Nếu có vấn đề nào chưa rõ, các bạn hãy liên hệ với chúng tôi để được giúp đỡ.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *