Python Fungsi Lambda dengan CONTOH
โก Ringkasan Cerdas
Fungsi Lambda dalam Python adalah fungsi anonim kecil yang didefinisikan dengan kata kunci lambda, bukan def. Fungsi ini menyimpan satu ekspresi, menerima sejumlah argumen, dan sering kali diteruskan langsung ke fungsi bawaan seperti map(), filter(), dan sorted().

Apa Fungsi Lambda di Python?
A Fungsi Lambda di Python pemrograman adalah fungsi anonim atau fungsi yang tidak memiliki nama. Ini adalah fungsi kecil dan terbatas yang memiliki tidak lebih dari satu baris. Sama seperti fungsi normal, fungsi Lambda dapat memiliki banyak argumen dengan satu ekspresi.
In Python, ekspresi lambda (atau bentuk lambda) digunakan untuk membuat fungsi anonim. Untuk melakukannya, Anda akan menggunakan lambda kata kunci (seperti yang Anda gunakan def untuk mendefinisikan fungsi normal). Setiap fungsi anonim yang Anda definisikan Python akan memiliki 3 bagian penting:
- Kata kunci lambda.
- Parameter (atau variabel terikat), dan
- Tubuh fungsi.
Fungsi lambda dapat memiliki sejumlah parameter, namun isi fungsi hanya dapat berisi satu ekspresi. Selain itu, lambda ditulis dalam satu baris kode dan juga dapat langsung dipanggil. Anda akan melihat semua ini beraksi pada contoh berikut.
Sintaks dan Contohnya
Sintaks formal untuk menulis fungsi lambda adalah seperti yang diberikan di bawah ini:
lambda p1, p2: expression
Di sini, p1 dan p2 adalah parameter yang diteruskan ke fungsi lambda. Anda dapat menambahkan parameter sebanyak atau sesedikit yang Anda perlukan.
Namun, perhatikan bahwa kita tidak menggunakan tanda kurung di sekitar parameter seperti yang kita lakukan pada fungsi biasa. Bagian terakhir (ekspresi) adalah ekspresi apa pun yang valid. Python ekspresi yang beroperasi pada parameter yang Anda berikan ke fungsi tersebut.
Contoh 1
Sekarang setelah Anda mengetahui tentang lambda, mari kita coba dengan sebuah contoh. Jadi, buka milikmu IDLE dan ketik yang berikut ini:
adder = lambda x, y: x + y print (adder (1, 2))
Code Penjelasan
Di sini, kita mendefinisikan variabel yang akan menampung hasil yang dikembalikan oleh fungsi lambda.
1. Kata kunci lambda digunakan untuk mendefinisikan fungsi anonim.
2. x dan y adalah parameter yang kita teruskan ke fungsi lambda.
3. Ini adalah isi fungsi, yang menambahkan 2 parameter yang kita lewati. Perhatikan bahwa ini adalah ekspresi tunggal. Anda tidak dapat menulis banyak pernyataan di badan fungsi lambda.
4. Kami memanggil fungsi dan mencetak nilai yang dikembalikan.
Contoh 2
Itu tadi contoh dasar untuk memahami fundamental dan sintaks lambda. Sekarang mari kita coba mencetak lambda dan melihat hasilnya. Sekali lagi, buka file Anda. IDLE dan ketik yang berikut ini:
#What a lambda returns string='some kind of a useless lambda' print(lambda string : print(string))
Sekarang simpan file Anda dan tekan F5 untuk menjalankan program. Ini adalah output yang harus Anda dapatkan.
Keluaran:
<function <lambda> at 0x00000185C3BF81E0>
Apa yang terjadi di sini? Mari kita lihat kodenya untuk memahaminya lebih lanjut.
Code Penjelasan:
1. Di sini, kita mendefinisikan sebuah string yang akan Anda berikan sebagai parameter ke lambda.
2. Kita mendeklarasikan sebuah lambda yang memanggil pernyataan print dan mencetak hasilnya.
Namun mengapa program tidak mencetak string yang kita berikan? Ini karena lambda itu sendiri mengembalikan objek fungsi. Dalam contoh ini, lambda tersebut tidak bernama oleh fungsi cetak tetapi sederhananya kembali Objek fungsi dan lokasi memori tempat objek tersebut disimpan. Itulah yang akan dicetak di konsol.
Contoh 3
Namun, jika Anda menulis program seperti ini:
#What a lambda returns #2 x="some kind of a useless lambda" (lambda x : print(x))(x)
Kemudian jalankan dengan menekan F5, Anda akan melihat output seperti ini.
Keluaran:
some kind of a useless lambda
Sekarang, lambda dipanggil, dan string yang kita berikan akan dicetak di konsol. Tapi apa sintaks aneh itu, dan mengapa definisi lambda dikelilingi oleh tanda kurung? Mari kita pahami sekarang.
Code Penjelasan:
1. Berikut adalah string yang sama yang telah kita definisikan pada contoh sebelumnya.
2. Pada bagian ini, kita mendefinisikan sebuah lambda dan memanggilnya secara langsung dengan memberikan string sebagai argumen. Ini disebut IIFE (Immediately Invoked Function Expression), dan Anda akan mempelajari lebih lanjut tentangnya di bagian-bagian selanjutnya dari tutorial ini.
Contoh 4
Mari kita lihat contoh terakhir untuk memahami bagaimana lambda dan fungsi biasa dieksekusi. Jadi, buka IDLE dan pada file baru, ketik yang berikut ini:
#A REGULAR FUNCTION def guru( funct, *args ): funct( *args ) def printer_one( arg ): return print (arg) def printer_two( arg ): print(arg) #CALL A REGULAR FUNCTION guru( printer_one, 'printer 1 REGULAR CALL' ) guru( printer_two, 'printer 2 REGULAR CALL \n' ) #CALL A REGULAR FUNCTION THRU A LAMBDA guru(lambda: printer_one('printer 1 LAMBDA CALL')) guru(lambda: printer_two('printer 2 LAMBDA CALL'))
Sekarang, simpan file dan tekan F5 untuk menjalankan program. Jika Anda tidak membuat kesalahan, outputnya akan seperti ini.
Keluaran:
printer 1 REGULAR CALL printer 2 REGULAR CALL printer 1 LAMBDA CALL printer 2 LAMBDA CALL
Code Penjelasan:
1. Sebuah fungsi bernama guru yang menerima fungsi lain sebagai parameter pertama dan argumen-argumen lain yang mengikutinya.
2. printer_one adalah fungsi sederhana yang mencetak parameter yang diberikan kepadanya dan mengembalikannya.
3. printer_two mirip dengan printer_one tetapi tanpa pernyataan return.
4. Pada bagian ini, kita memanggil fungsi guru dan meneruskan fungsi printer serta sebuah string sebagai parameter.
5. Ini adalah sintaks untuk mencapai langkah keempat (yaitu, memanggil fungsi guru) tetapi menggunakan lambda.
Di bagian selanjutnya, Anda akan mempelajari cara menggunakan fungsi lambda dengan peta(), mengurangi(), dan Saring() in Python.
Menggunakan lambda dengan Python bawaan
Fungsi Lambda menyediakan cara yang elegan dan canggih untuk melakukan operasi menggunakan metode bawaan di Python. Hal ini dimungkinkan karena lambda dapat langsung dipanggil dan diteruskan sebagai argumen ke fungsi-fungsi ini.
IIFE di Python Lambda
IIFE singkatan segera memanggil eksekusi fungsi. Artinya, fungsi lambda dapat dipanggil segera setelah didefinisikan. Mari kita pahami hal ini dengan sebuah contoh; jalankan kode Anda. IDLE dan ketik yang berikut ini:
(lambda x: x + x)(2)
Berikut output dan penjelasan kodenya:
Kemampuan lambda untuk segera dipanggil memungkinkan Anda menggunakannya di dalam fungsi seperti map() dan pengurangan(). Ini berguna karena Anda mungkin tidak ingin menggunakan fungsi ini lagi.
lambda di filter()
Fungsi filter digunakan untuk memilih beberapa elemen tertentu dari rangkaian elemen. Urutannya dapat berupa iterator apa saja seperti daftar, set, tupel, dll.
Elemen-elemen yang akan dipilih didasarkan pada beberapa batasan yang telah ditentukan sebelumnya. Fungsi ini membutuhkan 2 parameter:
- Sebuah fungsi yang mendefinisikan batasan pemfilteran
- Urutan (iterator apa pun seperti daftar, tupel, dll.)
Sebagai contoh,
sequences = [10,2,8,7,5,4,3,11,0, 1] filtered_result = filter (lambda x: x > 4, sequences) print(list(filtered_result))
Berikut hasilnya:
[10, 8, 7, 5, 11]
Code Penjelasan:
1. Pada pernyataan pertama, kami mendefinisikan suatu daftar yang disebut deret yang berisi beberapa angka.
2. Di sini, kita mendeklarasikan variabel bernama filtered_result, yang akan menyimpan nilai terfilter yang dikembalikan oleh fungsi filter().
3. Fungsi lambda yang berjalan pada setiap elemen daftar dan mengembalikan nilai true jika lebih besar dari 4.
4. Cetak hasil yang dikembalikan oleh fungsi filter.
lambda di peta()
Fungsi map digunakan untuk menerapkan operasi tertentu pada setiap elemen dalam sebuah urutan. Seperti fungsi filter(), fungsi ini juga membutuhkan 2 parameter:
- Sebuah fungsi yang mendefinisikan operasi yang akan dilakukan pada elemen-elemen tersebut.
- Satu atau lebih urutan
Misalnya, berikut adalah program yang mencetak kuadrat angka dalam daftar yang diberikan:
sequences = [10,2,8,7,5,4,3,11,0, 1] filtered_result = map (lambda x: x*x, sequences) print(list(filtered_result))
Keluaran:
[100, 4, 64, 49, 25, 16, 9, 121, 0, 1]
Code Penjelasan:
1. Di sini, kita mendefinisikan sebuah daftar yang disebut urutan yang berisi beberapa angka.
2. Kita mendeklarasikan sebuah variabel bernama filtered_result yang akan menyimpan nilai-nilai yang telah dipetakan.
3. Sebuah fungsi lambda yang berjalan pada setiap elemen daftar dan mengembalikan kuadrat dari angka tersebut.
4. Cetak hasil yang dikembalikan oleh fungsi map.
lambda di pengurangan()
Fungsi reduce, seperti map(), digunakan untuk menerapkan operasi ke setiap elemen dalam suatu urutan. Namun, fungsi ini berbeda dari map dalam cara kerjanya. Berikut ini adalah langkah-langkah yang diikuti oleh fungsi reduce() untuk menghitung output:
Langkah 1) Lakukan operasi yang ditentukan pada 2 elemen pertama dari urutan tersebut.
Langkah 2) Simpan hasil ini.
Langkah 3) Lakukan operasi dengan hasil yang disimpan dan elemen berikutnya dalam urutan.
Langkah 4) Ulangi sampai tidak ada lagi elemen yang tersisa.
Ini juga membutuhkan dua parameter:
- Fungsi yang mendefinisikan operasi yang akan dilakukan
- Urutan (iterator apa pun seperti daftar, tupel, dll.)
Misalnya, berikut adalah program yang mengembalikan produk dari semua elemen dalam daftar:
from functools import reduce sequences = [1,2,3,4,5] product = reduce (lambda x, y: x*y, sequences) print(product)
Berikut hasilnya:
120
Code Penjelasan:
1. Impor fungsi reduce dari modul functools.
2. Di sini, kita mendefinisikan sebuah daftar yang disebut urutan yang berisi beberapa angka.
3. Kita mendeklarasikan sebuah variabel bernama product yang akan menyimpan nilai hasil reduksi.
4. Sebuah fungsi lambda yang berjalan pada setiap elemen dalam daftar. Fungsi ini akan mengembalikan hasil perkalian angka tersebut sesuai dengan hasil sebelumnya.
5. Cetak hasil yang dikembalikan oleh fungsi reduce.
Mengapa (dan mengapa tidak) menggunakan fungsi lambda?
Seperti yang akan Anda lihat di bagian berikutnya, lambda diperlakukan sama seperti fungsi reguler di tingkat juru bahasa. Bisa dibilang, lambda menyediakan sintaksis ringkas untuk fungsi penulisan yang mengembalikan satu ekspresi.
Namun, Anda perlu mengetahui kapan sebaiknya menggunakan lambda dan kapan harus menghindarinya. Di bagian ini, Anda akan mempelajari beberapa prinsip desain yang digunakan oleh Python pengembang saat menulis lambda.
Salah satu kasus penggunaan lambda yang paling umum adalah dalam pemrograman fungsional, karena Python mendukung paradigma (atau gaya) pemrograman yang dikenal sebagai pemrograman fungsional.
Ini memungkinkan Anda untuk memberikan fungsi sebagai parameter ke fungsi lain (misalnya, dalam map, filter, dll.). Dalam kasus seperti itu, menggunakan lambda menawarkan cara elegan untuk membuat fungsi sekali pakai dan meneruskannya sebagai parameter.
Kapan Anda tidak boleh menggunakan Lambda?
Anda tidak boleh menulis fungsi lambda yang rumit di lingkungan produksi. Akan sangat sulit bagi pembuat kode yang mengelola kode Anda untuk mendekripsinya. Jika Anda mendapati diri Anda membuat ekspresi satu baris yang rumit, akan jauh lebih baik jika Anda mendefinisikan fungsi yang tepat. Sebagai praktik terbaik, Anda perlu mengingat bahwa kode sederhana selalu lebih baik daripada kode yang rumit.
Fungsi Lambdas vs. Reguler
Seperti yang telah disebutkan sebelumnya, lambda hanyalah fungsi yang tidak memiliki pengidentifikasi yang terikat padanya. Dengan kata lain, lambda adalah fungsi tanpa nama (karena itu, anonim). Berikut adalah tabel untuk mengilustrasikan perbedaan antara lambda dan fungsi biasa. Python.
| lambda | Fungsi Reguler |
|---|---|
sintaks:
lambda x : x + x
|
sintaks:
def (x) : return x + x |
| Fungsi Lambda hanya dapat memiliki satu ekspresi di tubuhnya. | Fungsi reguler dapat memiliki banyak ekspresi dan pernyataan di dalamnya. |
| Lambda tidak memiliki nama yang terkait dengannya. Itulah mengapa lambda juga dikenal sebagai fungsi anonim. | Fungsi reguler harus memiliki nama dan tanda tangan. |
| Lambdas tidak berisi pernyataan return karena isi dikembalikan secara otomatis. | Fungsi yang perlu mengembalikan nilai harus menyertakan pernyataan return. |
Penjelasan perbedaannya
Perbedaan utama antara lambda dan fungsi reguler adalah fungsi lambda hanya mengevaluasi satu ekspresi dan menghasilkan objek fungsi. Akibatnya, kita dapat memberi nama hasil fungsi lambda dan menggunakannya dalam program kita seperti yang kita lakukan pada contoh sebelumnya.
Fungsi reguler untuk contoh di atas akan terlihat seperti ini:
def adder (x, y): return x + y print (adder (1, 2))
Di sini, kita harus mendefinisikan a nama untuk fungsi yang Pengembalian hasilnya ketika kita panggilan Fungsi lambda tidak mengandung pernyataan return karena hanya memiliki satu ekspresi yang selalu dikembalikan secara default. Anda bahkan tidak perlu menetapkan lambda, karena dapat langsung dipanggil (lihat bagian sebelumnya). Seperti yang akan Anda lihat, lambda menjadi sangat ampuh ketika kita menggunakannya dengan Pythonfungsi bawaannya.
Namun, Anda mungkin masih bertanya-tanya apa perbedaan lambda dengan fungsi yang mengembalikan ekspresi tunggal (seperti di atas). Pada level interpreter, tidak banyak perbedaan. Ini mungkin terdengar mengejutkan, tetapi fungsi lambda apa pun yang Anda tetapkan Python diperlakukan sebagai fungsi normal oleh penerjemah.
Pada tingkat bytecode, kedua definisi tersebut ditangani dengan cara yang sama oleh Python Penerjemah. Sekarang, Anda tidak dapat menyebutkan nama fungsi. lambda karena dipesan oleh PythonNamun, nama fungsi lain apa pun akan menghasilkan bytecode yang sama.
