Dalam artikel ini, kita akan belajar tentang fungsi lambda dalam Python dan sebab kita memerlukannya, dan melihat beberapa contoh praktikal fungsi lambda.
Fungsi Lambda, sering dipanggil "fungsi tanpa nama", sama seperti fungsi Python biasa, kecuali ia boleh ditakrifkan tanpa nama. Kata kunci >def digunakan untuk mentakrifkan fungsi biasa, manakala kata kunci lambda digunakan untuk mentakrifkan fungsi tanpa nama. Walau bagaimanapun, ia terhad kepada ungkapan satu baris. Mereka, seperti fungsi biasa, boleh menerima berbilang hujah.
lambda arguments: expression
Fungsi ini menerima sebarang bilangan input tetapi hanya menilai dan mengembalikan ungkapan.
Fungsi Lambda boleh digunakan di mana-mana objek fungsi diperlukan.
Anda mesti ingat bahawa fungsi lambda terhad secara sintaksis kepada satu ungkapan.
Selain jenis ekspresi lain dalam fungsi, ia mempunyai pelbagai kegunaan dalam kawasan pengaturcaraan tertentu.
Fungsi lambda memerlukan lebih sedikit baris kod daripada fungsi Python biasa yang ditulis menggunakan kata kunci def. Walau bagaimanapun, ini tidak sepenuhnya benar, kerana fungsi yang ditakrifkan menggunakan def boleh ditakrifkan dalam satu baris. Walau bagaimanapun, fungsi def biasanya ditakrifkan pada lebih daripada satu baris.
Ia biasanya digunakan apabila fungsi yang lebih pendek (sementara) diperlukan, biasanya dalam fungsi lain (seperti penapis, peta atau pengurangan).
Anda boleh mentakrifkan fungsi dan memanggilnya serta-merta pada penghujung definisi menggunakan fungsi lambda. Ini tidak boleh dilakukan dengan fungsi def.
# input string inputString = 'TUTORIALSpoint' # converting the given input string to lowercase and reversing it # with the lambda function reverse_lower = lambda inputString: inputString.lower()[::-1] print(reverse_lower(inputString))
Apabila dilaksanakan, program di atas akan menjana output berikut -
tniopslairotut
# Formatting number to 2 decimal places using lambda function formatNum = lambda n: f"{n:e}" if isinstance(n, int) else f"{n:,.2f}" print("Int formatting:", formatNum(1000)) print("float formatting:", formatNum(5555.4895412))
Apabila dilaksanakan, program di atas akan menjana output berikut -
Int formatting: 1.000000e+03 float formatting: 5,555.49
# creating a function that returns the square root of # the number passed to it def square(x): return x*x # using lambda function that returns the square root of # the number passed lambda_square = lambda x: x*x # printing the square root of the number by passing the # random number to the above-defined square function with the def keyword print("Square of the number using the function with 'def' keyword:", square(4)) # printing the square root of the number by passing the # random number to the above lambda_square function with lambda keyword print("Square of the number using the function with 'lambda' keyword:", lambda_square(4))
Apabila dilaksanakan, program di atas akan menjana output berikut -
Square of the number using the function with 'def' keyword: 16 Square of the number using the function with 'lambda' keyword: 16
Seperti yang ditunjukkan dalam contoh sebelumnya, fungsi square() dan lambda_square () berfungsi sama dan seperti yang dijangkakan. Mari kita lihat lebih dekat contoh ini dan ketahui perbezaan antara mereka -
Gunakan fungsi lambda | Tiada fungsi lambda |
---|---|
Menyokong pernyataan satu baris yang mengembalikan nilai tertentu. | Membenarkan sebarang bilangan baris dalam blok fungsi. |
Sesuai untuk operasi kecil atau manipulasi data. | Ini berguna dalam situasi di mana berbilang baris kod diperlukan. |
Kurangkan kebolehbacaan kod | Kami boleh meningkatkan kebolehbacaan dengan menggunakan ulasan dan penjelasan berfungsi. |
Gunakan fungsi Lambda dengan pemahaman senarai
is_odd_list = [lambda arg=y: arg * 5 for y in range(1, 10)] # looping on each lambda function and calling the function # for getting the multiplied value for i in is_odd_list: print(i())
Apabila dilaksanakan, program di atas akan menjana output berikut -
5 10 15 20 25 30 35 40 45
Pada setiap lelaran pemahaman senarai, fungsi lambda baharu dicipta dengan parameter lalai y (dengan y ialah item semasa dalam lelaran). Kemudian, dalam gelung for, kami menggunakan i() untuk memanggil objek fungsi yang sama dengan parameter lalai dan mendapatkan nilai yang diperlukan. Oleh itu, is_odd_list memegang senarai objek fungsi lambda.
Gunakan fungsi Lambda dengan syarat if-else
# using lambda function to find the maximum number among both the numbers find_maximum = lambda x, y : x if(x > y) else y print(find_maximum(6, 3))
Apabila dilaksanakan, program di atas akan menjana output berikut -
6
Gunakan fungsi Lambda dengan berbilang kenyataan
inputList = [[5,2,8],[2, 9, 12],[10, 4, 2, 7]] # sorting the given each sublist using lambda function sorted_list = lambda k: (sorted(e) for e in k) # getting the second-largest element second_largest = lambda k, p : [x[len(x)-2] for x in p(k)] output = second_largest(inputList, sorted_list) # printing the second largest element print(output)
Apabila dilaksanakan, program di atas akan menjana output berikut -
[5, 9, 7]
inputList = [3, 5, 10, 7, 24, 6, 1, 12, 8, 4] # getting the even numbers from the input list # using lambda and filter functions evenList = list(filter(lambda n: (n % 2 == 0), inputList)) # priting the even numbers from the input list print("Even numbers from the input list:", evenList)
Apabila dilaksanakan, program di atas akan menjana output berikut -
Even numbers from the input list: [10, 24, 6, 12, 8, 4]
Python's map() menerima fungsi dan senarai sebagai parameter. Memanggil fungsi dengan fungsi lambda dan senarai, ia mengembalikan senarai baharu yang mengandungi semua item yang diubah lambda yang dipulangkan oleh fungsi untuk setiap item.
Tukar semua elemen senarai kepada huruf kecil menggunakan fungsi lambda dan map()
# input list inputList = ['HELLO', 'TUTORIALSpoint', 'PyTHoN', 'codeS'] # converting all the input list elements to lowercase using lower() # with the lambda() and map() functions and returning the result list lowercaseList = list(map(lambda animal: animal.lower(), inputList)) # printing the resultant list print("Converting all the input list elements to lowercase:\n", lowercaseList)
Apabila dilaksanakan, program di atas akan menjana output berikut -
Converting all the input list elements to lowercase: ['hello', 'tutorialspoint', 'python', 'codes']
Dalam tutorial ini, kami belajar tentang fungsi lambda dalam Python secara mendalam dengan banyak contoh. Kami juga mempelajari perbezaan antara fungsi lambda dan fungsi def.
Atas ialah kandungan terperinci Apakah fungsi lambda dalam Python dan mengapa kita memerlukannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!