Fungsi Lambda dengan Python

Apa itu Fungsi Lambda?

​,war
Dalam Python, fungsi adalah objek: mereka dapat ditetapkan ke variabel, dapat dikembalikan dari fungsi lain, disimpan dalam daftar atau dikte, dan diteruskan sebagai parameter untuk fungsi lain. Pertimbangkan, misalnya, map() fungsi bawaan. Sintaksnya adalah map(function, iterable) dan digunakan untuk menerapkan dengan mudah function untuk setiap elemen dari iterable.

map() sebenarnya mengembalikan an iterator obyek. Dalam praktiknya, kami memasukkan hasilnya sebagai a list, tuple, set, dict, dll, mana yang lebih nyaman.
​,war
Misalkan Anda ingin mengkuadratkan setiap suku dari sebuah daftar menggunakan map() fungsi. Untuk melakukan itu, kami akan mendefinisikan a square() fungsi dan menggunakannya sebagai parameter untuk map():

my_list = [1,2,3,4,5]
def square(x):
    return x**2

my_modified_list = list(map(square, my_list))
print(my_modified_list)
[1, 4, 9, 16, 25]

​,war
Namun, jika hanya menggunakan kami square() fungsinya adalah untuk membuat daftar ini, lebih bersih menggunakan a lambda fungsi:

my_list = [1,2,3,4,5]
my_modified_list = list(map(lambda x: x**2, my_list))
print(my_modified_list)
[1, 4, 9, 16, 25]

Dengan Python, lambda fungsi adalah fungsi anonim yang mengambil nama dan sintaks dari Gereja Alonzo Kalkulus Lambda. Sintaks mereka adalah:

lambda x_1,..., x_n : expression(x_1, ..., x_n)

Ini menciptakan fungsi anonim yang menerima sebagai input variabel x_1, ..., x_n dan mengembalikan yang dievaluasi expression(x_1, ..., x_n).
​,war
Tujuan lambda fungsi akan digunakan sebagai parameter untuk fungsi yang menerima fungsi sebagai parameter, seperti yang kita lakukan map() di atas. Python memungkinkan Anda untuk menetapkan a lambda fungsi untuk variabel, tapi Panduan gaya PEP 8 menyarankan untuk tidak melakukannya. Jika Anda ingin menetapkan fungsi sederhana ke sebuah variabel, lebih baik melakukannya sebagai definisi satu baris. Ini memastikan objek yang dihasilkan dinamai dengan benar, meningkatkan keterbacaan traceback:

anonymous_square = lambda x : x**2def named_square(x): return x**2print(anonymous_square.__name__)
print(named_square.__name__)


a = anonymous_square
b = named_square
print(a.__name__)
print(b.__name__)

Mengapa Menggunakan Fungsi Lambda?

Setelah paragraf terakhir, Anda mungkin bertanya-tanya mengapa Anda ingin menggunakan a lambda fungsi. Lagi pula, apa pun yang bisa dilakukan dengan a lambda fungsi dapat dilakukan dengan fungsi bernama.
​,war
Jawabannya adalah itu lambda fungsi tujuan adalah untuk hidup di dalam ekspresi yang lebih besar yang mewakili perhitungan. Salah satu cara untuk memikirkan hal ini adalah dengan analogi dengan variabel dan nilai. Pertimbangkan kode berikut:

x = 2

Variabel x adalah placeholder (atau nama) untuk bilangan bulat 2. Misalnya, menelepon print(x) dan print(2) memberikan output yang persis sama. Dalam hal fungsi:

def square(x): return x**2

Fungsi square() adalah placeholder untuk perhitungan mengkuadratkan angka. Perhitungan ini dapat ditulis dengan cara tanpa nama sebagai lambda x: x**2.
​,war
Mengikuti penyimpangan filosofis ini, mari kita lihat beberapa contoh aplikasi untuk lambda fungsi.
​,war

Menggunakan Lambda dengan Fungsi sort()

Grafik sorted() fungsi mengurutkan iterable. Itu menerima fungsi sebagai miliknya key argumen, dan hasil dari fungsi yang diterapkan ke setiap elemen iterable digunakan untuk mengurutkan elemen.
​,war
Ini sangat cocok untuk a lambda fungsi: dengan mengatur key parameter dengan a lambda fungsi, kita dapat mengurutkan berdasarkan atribut elemen apa pun. Misalnya, kita dapat mengurutkan daftar nama berdasarkan nama keluarga:

name_list = ['Grace Hopper', 'Ada Lovelace', 'Emmy Noether', 'Marie Curie']
​
sorted_by_surname = sorted(name_list, key = lambda x: x.split()[1])
​
print(sorted_by_surname)
['Marie Curie', 'Grace Hopper', 'Ada Lovelace', 'Emmy Noether']

Menggunakan Lambda dengan Fungsi 'filter()'

Grafik filter() fungsi memiliki sintaks berikut: filter(function, iterable) dan itu menampilkan elemen-elemen dari iterable yang mengevaluasi function(element) benar (mirip dengan an WHERE klausa dalam SQL). Kita bisa gunakan lambda berfungsi sebagai parameter untuk filter() untuk memilih elemen dari iterable.

Perhatikan contoh berikut:

num_list = list(range(0,100))
​
multiples_of_15= filter(lambda x: (x % 3 == 0) and (x % 5 == 0), num_list)
​
print(list(multiples_of_15))
[0, 15, 30, 45, 60, 75, 90]

filter() berlaku lambda fungsi lambda x: (x % 3 == 0) and (x % 5 == 0) untuk setiap elemen dari range(0,100), dan mengembalikan a filter obyek. Kami mengakses elemen dengan mentransmisikannya sebagai list.
​,war

Menggunakan Lambda dengan Fungsi map()

​,war
Contoh terakhir kami adalah sesuatu yang telah kami lihat di pendahuluan – itu map() fungsi. Itu map() sintaks fungsi adalah: map(function, iterable), dan map() berlaku function untuk setiap elemen dari iterable, mengembalikan a map objek yang dapat diakses dengan casting ke a list.

Kami telah melihat bagaimana ini dapat diterapkan ke daftar, tetapi dapat diterapkan ke dikte menggunakan dict.items() Metode:

my_data = {'Mary':1, 'Alice':2, 'Bob':0}
map_obj = map(lambda x: f'{x[0]} had {x[1]} little lamb', my_data.items())
print(', '.join((map_obj)))
Mary had 1 little lamb, Alice had 2 little lamb, Bob had 0 little lamb

atau ke string:

my_string = 'abcdefg'
''.join(map(lambda x: chr(ord(x)+2),my_string))
'cdefghi'

Lihat panduan praktis dan praktis kami untuk mempelajari Git, dengan praktik terbaik, standar yang diterima industri, dan termasuk lembar contekan. Hentikan perintah Googling Git dan sebenarnya belajar itu!

Kita dapat menggunakan map() berfungsi dengan cara yang cerdik – salah satu contohnya adalah menerapkan banyak fungsi ke input yang sama.

Misalnya, Anda membuat API yang menerima string teks, dan Anda ingin menerapkan daftar fungsi ke dalamnya.

Setiap fungsi mengekstrak beberapa fitur dari teks. Fitur yang ingin kita ekstrak adalah jumlah kata, kata kedua dan huruf keempat dari kata keempat:

def number_of_words(text):
  return len(text.split())
​
def second_word(text):
  return text.split()[1]
​
def fourth_letter_of_fourth_word(text):
  return text.split()[3][3]
​
function_list = [number_of_words, second_word, fourth_letter_of_fourth_word]
​
my_text = 'Mary had a little lamb'
map_obj = map(lambda f: f(my_text), function_list)
​
feature_list = list(map_obj)
​
print(feature_list)
[5, 'had', 't']

​,war

Kesimpulan

​,war
Dalam panduan ini, kami telah menjelajahi fungsionalitas dari lambda fungsi dalam Python. Kami telah melihat itu lambda fungsi adalah fungsi anonim untuk digunakan sebagai parameter fungsi sebaris untuk fungsi lainnya. Kami telah melihat beberapa kasus penggunaan serta kapan tidak menggunakannya.
​,war
Saat memprogram, penting untuk mengingat kutipan Donald Knuth: "Program dimaksudkan untuk dibaca oleh manusia dan hanya untuk dieksekusi oleh komputer." Dengan pemikiran ini, lambda fungsi adalah alat yang berguna untuk menyederhanakan kode kita, tetapi harus digunakan dengan bijak.

Stempel Waktu:

Lebih dari penyalahgunaan