Cara Menggunakan Fungsi Lambda dengan Python [Dengan Contoh]

Diterbitkan: 2022-11-10

Dalam tutorial ini, Anda akan mempelajari semua tentang fungsi lambda dengan Python – dari sintaks untuk mendefinisikan fungsi lambda hingga kasus penggunaan yang berbeda dengan contoh kode.

Dalam Python, lambda adalah fungsi anonim yang memiliki sintaks ringkas dan dapat digunakan dengan fungsi bawaan lain yang bermanfaat. Di akhir tutorial ini, Anda akan belajar bagaimana mendefinisikan fungsi lambda dan kapan Anda harus mempertimbangkan untuk menggunakannya di atas fungsi Python biasa.

Mari kita mulai!

Fungsi Python Lambda: Sintaks dan Contoh

Berikut sintaks umum untuk mendefinisikan fungsi lambda dengan Python:

 lambda parameter(s):return value

Dalam sintaks umum di atas:

  • lambda adalah kata kunci yang harus Anda gunakan untuk mendefinisikan fungsi lambda, diikuti oleh satu atau lebih parameter yang harus diambil oleh fungsi tersebut.
  • Ada titik dua yang memisahkan parameter dan nilai kembalian .

Saat mendefinisikan fungsi lambda, Anda harus memastikan bahwa nilai yang dikembalikan dihitung dengan mengevaluasi ekspresi yang mencakup satu baris kode. Anda akan memahami ini lebih baik saat kami mengkodekan contoh.

Contoh Fungsi Python Lambda

Cara terbaik untuk memahami fungsi lambda adalah memulai dengan menulis ulang fungsi Python biasa sebagai fungsi lambda.

Anda dapat membuat kode bersama dalam Python REPL atau di editor Python online Geekflare.

#1 . Pertimbangkan fungsi berikut square() , yang mengambil angka, num , sebagai argumen dan mengembalikan kuadrat dari angka tersebut.

 def square(num): return num*num

Anda dapat memanggil fungsi dengan argumen dan memverifikasi bahwa itu berfungsi dengan benar.

 >>> square(9) 81 >>> square(12) 144

Anda dapat menetapkan ekspresi lambda ini ke nama variabel, katakanlah, square1 untuk membuat definisi fungsi lebih ringkas: square1 = lambda num: num*num dan kemudian memanggil fungsi square1 dengan nomor apa pun sebagai argumen. Namun, kita tahu bahwa lambda adalah fungsi anonim, jadi Anda harus menghindari menetapkannya ke variabel.

Untuk fungsi square() , parameternya adalah num dan nilai kembaliannya adalah num*num . Setelah kami mengidentifikasi ini, kami dapat memasukkannya ke dalam ekspresi lambda dan menyebutnya dengan argumen, seperti yang ditunjukkan:

 >>> (lambda num: num*num)(2) 4

Ini adalah konsep Ekspresi Fungsi Segera Dipanggil, di mana kita memanggil fungsi tepat setelah mendefinisikannya.

#2 . Selanjutnya, mari kita tulis ulang fungsi sederhana lainnya add() yang memasukkan angka, num1 dan num2 , dan mengembalikan jumlah mereka, num1 + num2 .

 def add(num1,num2): return num1 + num2

Mari kita panggil fungsi add() dengan dua angka sebagai argumen:

 >>> add(4,3) 7 >>> add(12,5) 17 >>> add(12,6) 18

Dalam hal ini, num1 dan num2 adalah dua parameter dan nilai yang dikembalikan adalah num1 + num2 .

 >>> (lambda num1, num2: num1 + num2)(3,7) 10

Fungsi Python juga dapat mengambil nilai default untuk parameter. Mari kita ubah definisi fungsi add() dan atur nilai default parameter num2 ke 10.

 def add(num1, num2=10): return num1 + num2

Dalam panggilan fungsi berikut:

  • Pada pemanggilan fungsi pertama, nilai num1 adalah 1 dan nilai num2 adalah 3. Saat Anda memasukkan nilai num2 dalam pemanggilan fungsi, nilai tersebut digunakan; fungsi kembali 4.
  • Namun, jika Anda hanya memasukkan satu argumen ( num1 adalah 7), nilai default 10 digunakan untuk num2 ; fungsi kembali 17.
 >>> add(1,3) 4 >>> add(7) 17

Saat menulis fungsi yang mengambil nilai default untuk parameter tertentu sebagai ekspresi lambda, Anda dapat menentukan nilai default saat mendefinisikan parameter.

 >>> (lambda num1, num2 = 10: num1 + num2)(1) 11

Kapan Anda Harus Menggunakan Fungsi Lambda dengan Python?

Sekarang setelah Anda mempelajari dasar-dasar fungsi lambda dengan Python, berikut adalah beberapa kasus penggunaan:

  • Ketika Anda memiliki fungsi yang ekspresi pengembaliannya adalah satu baris kode dan Anda tidak perlu mereferensikan fungsi tersebut di tempat lain dalam modul yang sama, Anda dapat menggunakan fungsi lambda. Kami juga telah mengkodekan beberapa contoh untuk memahami hal ini.
  • Anda dapat menggunakan fungsi lambda saat menggunakan fungsi bawaan, seperti map(), filter(), dan reduce().
  • Fungsi Lambda dapat membantu dalam menyortir struktur data Python seperti daftar dan kamus.

Cara Menggunakan Python Lambda dengan Fungsi Bawaan

1. Menggunakan Lambda dengan map()

Fungsi map() menerima iterable dan fungsi dan menerapkan fungsi tersebut ke setiap item dalam iterable, seperti yang ditunjukkan:

python-lambda-dengan-peta

Mari nums daftar angka dan gunakan fungsi map() untuk membuat daftar baru yang berisi kuadrat dari setiap angka dalam daftar nums . Perhatikan penggunaan fungsi lambda untuk mendefinisikan operasi kuadrat.

 >>> nums = [4,5,6,9] >>> list(map(lambda num:num*num,nums)) [16, 25, 36, 81]

Saat fungsi map() mengembalikan objek peta, kita harus memasukkannya ke dalam daftar.

️ Lihat tutorial ini tentang fungsi map() dengan Python.

2. Menggunakan Lambda dengan filter()

Mari kita definisikan nums , daftar angka:

 >>> nums = [4,5,6,9]

Misalkan Anda ingin memfilter daftar ini dan hanya mempertahankan angka ganjil.

Anda dapat menggunakan fungsi filter() bawaan Python.

Fungsi filter() mengambil kondisi dan iterable : filter(condition, iterable) . Hasilnya hanya berisi elemen dalam iterable asli yang memenuhi kondisi. Anda dapat melemparkan objek yang dikembalikan ke dalam iterable Python seperti daftar.

python-lambda-dengan-filter

Untuk memfilter semua angka genap, kami hanya akan mempertahankan angka ganjil. Jadi ekspresi lambda harus lambda num: num%2!=0 . Jumlah num%2 adalah sisa ketika num dibagi 2.

  • num%2!=0 True setiap kali num ganjil, dan
  • num%2!=0 False setiap kali num genap.
 >>> nums = [4,5,6,9] >>> list(filter(lambda num:num%2!=0,nums)) [5, 9]

3. Menggunakan Lambda dengan pengurangan ()

Fungsi reduce() menerima iterable dan fungsi. Ini mengurangi iterable dengan menerapkan fungsi secara iteratif pada item dari iterable.

python-lambda-dengan-mengurangi

Untuk menggunakan fungsi reduce() , Anda harus mengimpornya dari modul functools :

 >>> from functools import reduce

Mari kita gunakan fungsi reduce() untuk menghitung jumlah semua angka dalam daftar nums . Kami mendefinisikan ekspresi lambda: lambda num1,num2:num1+num2 , sebagai fungsi penjumlahan reduksi.

Operasi reduksi akan terjadi seperti ini: f(f(f(4,5),6),9) = f(f(9,6),9) = f(15,9) = 24. Di sini, f adalah operasi penjumlahan pada dua item dari daftar, yang ditentukan oleh fungsi lambda.

 >>> from functools import reduce >>> nums = [4,5,6,9] >>> reduce(lambda num1,num2:num1+num2,nums) 24

Fungsi Python Lambda untuk Menyesuaikan Penyortiran

Selain menggunakan fungsi lambda dengan fungsi Python bawaan, seperti map() , filter() , dan reduce() , Anda juga dapat menggunakannya untuk menyesuaikan fungsi bawaan dan metode yang digunakan untuk menyortir.

gambar

1. Mengurutkan Daftar Python

Saat bekerja dengan daftar Python, Anda sering harus mengurutkannya berdasarkan kriteria penyortiran tertentu. Untuk mengurutkan daftar Python pada tempatnya, Anda dapat menggunakan metode sort() bawaan pada daftar tersebut. Jika Anda memerlukan salinan daftar yang diurutkan, Anda dapat menggunakan fungsi sorted() .

Sintaks untuk menggunakan fungsi sort sorted() Python sorted(iterable, key=...,reverse= True | False) .

– Parameter key digunakan untuk menyesuaikan pengurutan.
– Parameter reverse dapat diatur ke True atau False ; nilai defaultnya adalah False .

Saat menyortir daftar angka dan string, pengurutan default adalah dalam urutan menaik dan urutan abjad, masing-masing. Namun, terkadang Anda mungkin ingin menentukan beberapa kriteria khusus untuk pengurutan.

Simak daftar buah- fruits berikut ini. Misalkan Anda ingin mendapatkan salinan daftar yang diurutkan. Anda harus mengurutkan string menurut jumlah kemunculan 'p' di dalamnya – dalam urutan menurun.

 >>> fruits = ['apple','pineapple','grapes','mango']

Saatnya menggunakan parameter key opsional. String adalah iterable dalam Python dan untuk mendapatkan jumlah kemunculan karakter di dalamnya, Anda dapat menggunakan metode .count() . Jadi kami mengatur key ke lambda x:x.count('p') sehingga pengurutan didasarkan pada berapa kali 'p' muncul dalam string.

 >>> fruits = ['apple','pineapple','grapes','mango'] >>> sorted(fruits,key=lambda x:x.count('p'),reverse=True) ['pineapple', 'apple', 'grapes', 'mango']

Dalam contoh ini:

  • key untuk mengurutkan adalah jumlah kemunculan karakter 'p', dan itu didefinisikan sebagai ekspresi lambda.
  • Karena kita telah menyetel parameter reverse ke True , pengurutan terjadi dalam urutan menurun dari jumlah kemunculan 'p'.

Dalam daftar fruits , 'nanas' berisi 3 kemunculan 'p', dan string 'apel', 'anggur', dan 'mangga' masing-masing berisi 2, 1, dan 0 kemunculan 'p'.

Memahami Pengurutan Stabil

Pertimbangkan contoh lain. Untuk kriteria penyortiran yang sama, kami telah mendefinisikan ulang daftar fruits . Di sini, 'p' muncul dalam string 'apel' dan 'anggur' masing-masing dua kali dan sekali. Dan itu tidak pernah terjadi pada senar 'mangga' dan 'melon'.

 >>> fruits = ['mango','apple','melon','grapes'] >>> sorted(fruits,key=lambda x:x.count('p'),reverse=True) ['apple', 'grapes', 'mango', 'melon']

Dalam daftar keluaran, 'mangga' muncul sebelum 'melon' meskipun keduanya tidak memiliki karakter 'p'. Tapi mengapa ini terjadi? Fungsi sorted() melakukan pengurutan yang stabil; jadi ketika hitungan 'p' sama untuk dua string, urutan elemen dalam daftar fruits asli dipertahankan.

Sebagai latihan cepat, tukar posisi 'mangga' dan 'melon' dalam daftar fruits , urutkan daftar berdasarkan kriteria yang sama, dan amati hasilnya.

️ Pelajari lebih lanjut tentang menyortir daftar Python.

2. Menyortir Kamus Python

Anda juga dapat menggunakan lambda saat menyortir kamus Python. Perhatikan kamus price_dict berikut yang berisi item dan harganya.

 >>> price_dict = { ... 'Milk':10, ... 'Honey':15, ... 'Bread':7, ... 'Candy':3 ... }

Untuk mendapatkan pasangan nilai kunci kamus sebagai daftar tupel, Anda dapat menggunakan metode kamus .items() :

 >>> price_dict_items = price_dict.items() dict_items([('Milk', 10), ('Honey', 15), ('Bread', 7), ('Candy', 3)])

Di Python, semua iterable: daftar, tupel, string, dan lainnya, ikuti pengindeksan nol. Jadi item pertama ada di indeks 0, item kedua ada di indeks 1, dan seterusnya.

Kami ingin mengurutkan berdasarkan nilai, yang merupakan harga setiap item dalam kamus. Di setiap tuple dalam daftar price_dict_items , item pada indeks 1 adalah harganya. Jadi kami menyetel key ke lambda x:x[1] karena akan menggunakan item pada indeks 1, harga, untuk mengurutkan kamus.

 >>> dict(sorted(price_dict_items,key=lambda x:x[1])) {'Candy': 3, 'Bread': 7, 'Milk': 10, 'Honey': 15}

Di output, item kamus telah diurutkan dalam urutan harga: dimulai dengan 'Candy', dengan harga 3 unit hingga 'Honey', dengan harga 15 unit.

️ Untuk mempelajari lebih lanjut, lihat panduan terperinci ini tentang menyortir kamus Python berdasarkan kunci dan nilai.

Menyimpulkan

Dan di sana Anda memilikinya! Anda telah mempelajari cara mendefinisikan fungsi lambda dan menggunakannya secara efektif dengan fungsi bawaan Python lainnya. Berikut ringkasan dari takeaways utama:

  • Dalam Python, lambda adalah fungsi anonim yang dapat menerima banyak argumen dan mengembalikan nilai; ekspresi yang akan dievaluasi untuk menghasilkan nilai pengembalian ini harus berupa satu baris kode. Mereka dapat digunakan untuk membuat definisi fungsi kecil lebih ringkas.
  • Untuk mendefinisikan fungsi Lambda, Anda dapat menggunakan sintaks: parameter lambda(s): return value .
  • Beberapa kasus penggunaan penting termasuk menggunakannya dengan fungsi map() , filter() , dan reduce() dan sebagai parameter kunci untuk menyesuaikan penyortiran iterable Python.

Selanjutnya, pelajari cara melakukan pembagian lantai dengan Python.