Panduan Pemula untuk Memahami Fungsi Python Lambda

Panduan Pemula untuk Memahami Fungsi Python Lambda

Lambdas di Python adalah salah satu ciri yang paling berguna, penting, dan menarik untuk diketahui. Malangnya, mereka juga mudah disalahpahami dan salah.





Dalam artikel ini, kami akan menerangkan semua yang perlu anda ketahui mengenai fungsi misteri ini, cara menggunakannya, dan mengapa ia berguna.





Sebelum menyelami contoh praktikal ini, anda mungkin ingin mewujudkan persekitaran maya Python. Sekiranya anda tidak mahu melakukannya, sekurang-kurangnya anda harus mencuba contoh-contoh ini dengan shell Python dalam talian yang interaktif .





Apa itu Lambda di Python?

Lambda hanyalah cara untuk menentukan fungsi di Python. Kadang-kadang mereka dikenali sebagai 'operator lambda' atau 'fungsi lambda'.

Sekiranya anda pernah menggunakan Python sebelumnya, anda mungkin telah menentukan fungsi anda menggunakan def kata kunci, dan ini berfungsi dengan baik untuk anda setakat ini. Jadi mengapa ada cara lain untuk melakukan perkara yang sama?



Perbezaannya ialah fungsi lambda tidak dikenali. Artinya, itu adalah fungsi yang tidak perlu disebutkan namanya. Mereka digunakan untuk membuat fungsi kecil sekali sahaja sekiranya fungsi 'nyata' terlalu besar dan besar.

Lambdas mengembalikan objek fungsi, yang dapat diberikan kepada pemboleh ubah. Lambdas dapat memiliki sejumlah argumen, tetapi mereka hanya dapat memiliki satu ungkapan. Anda tidak boleh memanggil fungsi lain di dalam lambdas.





Penggunaan yang paling umum untuk fungsi lambda adalah dalam kod yang memerlukan fungsi satu baris yang mudah, di mana akan berlebihan untuk menulis fungsi normal yang lengkap. Ini dibahas dengan lebih terperinci di bawah, di bawah 'Bagaimana dengan Peta, Tapis, dan Kurangkan?'.

Cara Menggunakan Lambdas di Python

Sebelum melihat fungsi lambda, mari kita lihat fungsi super asas yang ditentukan dengan cara 'tradisional':





def add_five(number):
return number + 5

print(add_five(number=4))

Fungsi ini sangat asas, tetapi berfungsi untuk menggambarkan lambda. Anda mungkin lebih kompleks daripada ini. Fungsi ini menambah lima nombor apa pun yang diteruskan kepadanya melalui nombor parameter.

Begini rupanya fungsi lambda:

add_five = lambda number: number + 5

print(add_five(number=4))

Daripada menggunakan def , perkataan itu lambda digunakan. Tidak ada tanda kurung yang diperlukan, tetapi ada perkataan yang mengikuti lambda kata kunci dibuat sebagai parameter. Kolon digunakan untuk memisahkan parameter dan ungkapan. Dalam kes ini, ungkapannya adalah nombor + 5 .

Tidak perlu menggunakan kembali kata kunci --- lambda melakukan ini untuk anda secara automatik.

Inilah cara anda membuat fungsi lambda dengan dua argumen:

bagaimana mencari anak anjing untuk dijual
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

Sekiranya anda masih tidak pasti mengenai titik lambda, bahagian seterusnya akan menyelam dan membantu anda melihat cahaya.

Python Lambdas Dengan Peta, Tapis, dan Kurangkan

Perpustakaan teras Python mempunyai tiga kaedah yang dipanggil peta , kurangkan , dan tapis . Kaedah ini mungkin merupakan alasan terbaik untuk menggunakan fungsi lambda.

The peta fungsi menjangkakan dua argumen: fungsi dan senarai. Ia mengambil fungsi itu dan menerapkannya pada setiap elemen dalam daftar, mengembalikan senarai elemen yang diubah sebagai objek peta. The senarai fungsi digunakan untuk menukar objek peta yang dihasilkan kembali menjadi senarai lagi.

Inilah cara menggunakan peta tanpa lambda:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

Fungsi peta ini cukup berguna, tetapi mungkin lebih baik. yang tambah_five fungsi diteruskan sebagai argumen, tetapi bagaimana jika anda tidak ingin membuat fungsi setiap kali anda menggunakan peta? Anda boleh menggunakan lambda sebagai gantinya!

Inilah kod yang sama, hanya dengan fungsi yang digantikan oleh lambda:

cara membuang catatan di facebook
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

Seperti yang anda lihat, keseluruhannya tambah_five fungsi tidak lagi diperlukan. Sebaliknya, fungsi lambda digunakan untuk menjaga keadaan kemas.

Dengan tapis fungsi, prosesnya hampir sama. Tapis mengambil fungsi dan menerapkannya pada setiap elemen dalam daftar dan membuat daftar baru dengan hanya unsur-unsur yang menyebabkan fungsi itu kembali Benar.

Pertama, tanpa lambdas:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

Tidak ada yang salah dengan kod ini, tetapi semakin lama semakin lama. Mari kita lihat berapa banyak baris yang dapat ditanggalkan oleh lambda:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

Fungsi lambda telah menggantikan keperluan keseluruhan lebih besar_than_ten_func ! Dan ia dilakukan dengan lima perkataan mudah. Inilah sebabnya mengapa lambdas sangat kuat: mereka mengurangkan kekacauan untuk tugas-tugas mudah.

Akhirnya, mari kita lihat kurangkan . Reduce adalah satu lagi fungsi Python yang sejuk. Ini menggunakan pengiraan bergulir untuk semua item dalam senarai. Anda boleh menggunakan ini untuk menghitung jumlah keseluruhan, atau mengalikan semua nombor bersama-sama:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

Contoh ini perlu diimport kurangkan daripada funkool modul, tetapi jangan risau, modul functools adalah sebahagian daripada perpustakaan teras Python.

Ceritanya sama dengan lambda, tidak perlu ada fungsi:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

Perkara Yang Perlu Diperhatikan Dengan Python Lambdas

Contoh-contoh ini telah menunjukkan betapa mudahnya fungsi lambda, bersama peta, penapis, dan pengurangan, dari perpustakaan teras Python. Namun, terdapat beberapa kegunaan di mana fungsi lambda tidak membantu.

Sekiranya anda melakukan sesuatu yang lebih daripada tugas asas, atau ingin memanggil kaedah lain, gunakan fungsi biasa. Lambdas bagus untuk satu fungsi, fungsi tanpa nama, tetapi mereka mesti mempunyai satu ungkapan sahaja. Sekiranya lambda anda mula kelihatan seperti ungkapan biasa, maka mungkin sudah waktunya untuk menggunakan kaedah khusus.

Untuk lebih banyak petua, lihat kami panduan untuk pengaturcaraan berorientasikan objek di Python dan lihat panduan Soalan Lazim kami untuk pemula Python.

Berkongsi Berkongsi Tweet E-mel 3 Cara Memeriksa sama ada E-mel Nyata atau Palsu

Sekiranya anda menerima e-mel yang kelihatan agak meragukan, sebaiknya periksa kesahihannya. Berikut adalah tiga cara untuk mengetahui sama ada e-mel itu nyata.

Baca Seterusnya
Topik-topik yang berkaitan
  • Pengaturcaraan
  • Python
  • Tutorial Pengekodan
Mengenai Pengarang Joe Coburn(136 Artikel Diterbitkan)

Joe adalah lulusan Sains Komputer dari University of Lincoln, UK. Dia seorang pembangun perisian profesional, dan ketika dia tidak terbang drone atau menulis muzik, dia sering didapati mengambil gambar atau menghasilkan video.

Lagi Dari Joe Coburn

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan