Apakah fungsi lambda dalam Python dan mengapa kita memerlukannya?

WBOY
Lepaskan: 2023-08-25 14:41:13
ke hadapan
1273 orang telah melayarinya

Apakah fungsi lambda dalam Python dan mengapa kita memerlukannya?

Dalam artikel ini, kita akan belajar tentang fungsi lambda dalam Python dan sebab kita memerlukannya, dan melihat beberapa contoh praktikal fungsi lambda.

Apakah fungsi lambda dalam Python?

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.

Tatabahasa

lambda arguments: expression
Salin selepas log masuk
  • 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.

Mengapa kita memerlukan fungsi Lambda?

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

Contoh mudah fungsi Python Lambda

Contoh

# 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))
Salin selepas log masuk

Output

Apabila dilaksanakan, program di atas akan menjana output berikut -

tniopslairotut
Salin selepas log masuk

Gunakan fungsi Lambda dalam semakan bersyarat

Contoh

# 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))
Salin selepas log masuk

Output

Apabila dilaksanakan, program di atas akan menjana output berikut -

Int formatting: 1.000000e+03
float formatting: 5,555.49
Salin selepas log masuk

Apakah perbezaan antara fungsi Lambda dan fungsi yang ditakrifkan?

Contoh

# 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))
Salin selepas log masuk

Output

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
Salin selepas log masuk

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.

Penggunaan praktikal fungsi Python lambda

Contoh

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())
Salin selepas log masuk

Output

Apabila dilaksanakan, program di atas akan menjana output berikut -

5
10
15
20
25
30
35
40
45
Salin selepas log masuk

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.

Contoh

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))
Salin selepas log masuk

Output

Apabila dilaksanakan, program di atas akan menjana output berikut -

6
Salin selepas log masuk

Contoh

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)
Salin selepas log masuk

Output

Apabila dilaksanakan, program di atas akan menjana output berikut -

[5, 9, 7]
Salin selepas log masuk

Fungsi python lambda dengan penapis()

Contoh

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)
Salin selepas log masuk

Output

Apabila dilaksanakan, program di atas akan menjana output berikut -

Even numbers from the input list: [10, 24, 6, 12, 8, 4]
Salin selepas log masuk

Fungsi python lambda dengan map()

Fungsi

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.

Contoh

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)
Salin selepas log masuk

Output

Apabila dilaksanakan, program di atas akan menjana output berikut -

Converting all the input list elements to lowercase:
 ['hello', 'tutorialspoint', 'python', 'codes']
Salin selepas log masuk

Kesimpulan

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!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan