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 aniterator
obyek. Dalam praktiknya, kami memasukkan hasilnya sebagai alist
,tuple
,set
,dict
, dll, mana yang lebih nyaman.
,war
Misalkan Anda ingin mengkuadratkan setiap suku dari sebuah daftar menggunakanmap()
fungsi. Untuk melakukan itu, kami akan mendefinisikan asquare()
fungsi dan menggunakannya sebagai parameter untukmap()
:
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**2
def named_square(x): return x**2
print(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.