Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Tạo lambda bên trong vòng lặp Python

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).