Tạo list các lambda trong vòng lặp:
Cách 1: Hàm bao (wrapper function)
def square(x):
return lambda: x*x
listOfLambdas = [square(i) for i in [1,2,3,4,5]]
for f in listOfLambdas:
print(f())
Kết quả: 1 4 9 16 25
Cách 2: Currying với default argument
listOfLambdas = [lambda i=i: i*i for i in range(1, 6)]
for f in listOfLambdas:
print(f())
Kết quả: 1 4 9 16 25
Lưu ý: Cách 2 dùng default argument i=i để capture giá trị hiện tại của i tại thời điểm tạo lambda (tránh late binding issue).