Latihan: Lambda Expressions
Latihan ini digunakan untuk menguji pemahaman tentang lambda expression dalam dua situasi umum:
- Menggunakan lambda untuk melakukan operasi sederhana terhadap setiap elemen data.
- Menggunakan lambda sebagai kriteria pengurutan data.
Pada latihan ini kita akan menggunakan:
lambdamap()list()sort()- parameter
key
Latihan 1: Mengkuadratkan Setiap Elemen List
Diberikan sebuah list:
my_list = [5, 4, 3]
Tugasnya adalah membuat list baru yang berisi hasil kuadrat dari setiap elemen.
Hasil yang diharapkan:
[25, 16, 9]
Solusi dengan Lambda dan map()
my_list = [5, 4, 3]
square_list = list(
map(
lambda item: item ** 2,
my_list
)
)
print(square_list)
Output:
[25, 16, 9]
Memahami Solusi
Perhatikan bagian:
lambda item: item ** 2
Lambda tersebut menerima satu parameter:
item
Kemudian melakukan:
item ** 2
yang berarti item dipangkatkan dengan 2.
Karena digunakan bersama map(), lambda tersebut dijalankan terhadap setiap elemen dalam my_list.
Prosesnya:
5 → 5² → 25
4 → 4² → 16
3 → 3² → 9
Sehingga hasil akhirnya:
[25, 16, 9]
Latihan 2: Sorting Tuple Berdasarkan Elemen Kedua
Diberikan sebuah list yang berisi beberapa tuple:
a = [
(0, 2),
(4, 3),
(9, 9),
(10, -1)
]
Setiap tuple memiliki dua elemen.
Contohnya:
(0, 2)
↑ ↑
│ └── elemen kedua
└───── elemen pertama
Tugasnya adalah mengurutkan tuple berdasarkan elemen kedua.
Hasil yang diharapkan:
[
(10, -1),
(0, 2),
(4, 3),
(9, 9)
]
Solusi dengan sort() dan Lambda
a = [
(0, 2),
(4, 3),
(9, 9),
(10, -1)
]
a.sort(
key=lambda x: x[1]
)
print(a)
Output:
[(10, -1), (0, 2), (4, 3), (9, 9)]
Memahami Parameter key
Bagian penting dari kode tersebut adalah:
key=lambda x: x[1]
Parameter key digunakan untuk menentukan nilai yang dijadikan dasar pengurutan.
Lambda:
lambda x: x[1]
berarti:
Ambil elemen kedua dari setiap tuple.
Misalnya:
(0, 2) → 2
(4, 3) → 3
(9, 9) → 9
(10, -1) → -1
Python kemudian mengurutkan berdasarkan nilai tersebut:
-1
2
3
9
Sehingga urutan tuple menjadi:
(10, -1)
(0, 2)
(4, 3)
(9, 9)
Mengapa Menggunakan x[1]?
Tuple memiliki index yang dimulai dari 0.
Contohnya:
item = (10, -1)
Strukturnya:
index:
0 1
(10, -1)
Maka:
x[0]
mengambil elemen pertama:
10
Sedangkan:
x[1]
mengambil elemen kedua:
-1
Karena latihan meminta pengurutan berdasarkan elemen kedua, kita menggunakan:
lambda x: x[1]
sort() Mengubah List Asli
Method:
.sort()
melakukan in-place sorting.
Artinya, list asli akan diubah secara langsung.
Contoh:
a = [
(0, 2),
(4, 3),
(9, 9),
(10, -1)
]
a.sort(
key=lambda x: x[1]
)
print(a)
Setelah sort() dijalankan, variable a sudah berisi data dalam urutan baru.
Berbeda dengan function sorted() yang menghasilkan list baru.
sort() vs sorted()
Python menyediakan dua pendekatan yang umum digunakan untuk sorting.
Menggunakan sort()
numbers = [3, 1, 2]
numbers.sort()
print(numbers)
Output:
[1, 2, 3]
List numbers diubah secara langsung.
Menggunakan sorted()
numbers = [3, 1, 2]
result = sorted(numbers)
print(result)
print(numbers)
Output:
[1, 2, 3]
[3, 1, 2]
sorted() menghasilkan list baru sehingga data asli tetap tersedia dalam urutan sebelumnya.
Lambda sebagai Sorting Key
Lambda sangat berguna sebagai key ketika kita membutuhkan aturan pengurutan tertentu.
Contohnya, data:
users = [
{"name": "Budi", "age": 25},
{"name": "Andi", "age": 20},
{"name": "Citra", "age": 30}
]
Kita dapat mengurutkan berdasarkan usia:
users.sort(
key=lambda user: user["age"]
)
Lambda menentukan nilai yang digunakan sebagai dasar pengurutan.
Konsepnya:
User
↓
lambda user: user["age"]
↓
Age
↓
Sorting
Hubungan dengan Higher-Order Function
Latihan ini juga memperkuat konsep Higher-Order Function.
Pada latihan pertama:
map(
lambda item: item ** 2,
my_list
)
Lambda diberikan kepada map() sebagai argument.
Pada latihan kedua:
a.sort(
key=lambda x: x[1]
)
Lambda diberikan kepada sort() melalui parameter key.
Dalam kedua kasus tersebut, function digunakan sebagai sebuah nilai.
Hal ini berkaitan dengan konsep First-Class Function dalam Python.
Poin Penting Pembelajaran
Dari latihan ini kita dapat memahami beberapa konsep penting.
Lambda untuk Operasi Sederhana
Contoh:
lambda item: item ** 2
digunakan untuk melakukan operasi sederhana terhadap sebuah nilai.
Lambda dengan map()
map(
lambda item: item ** 2,
my_list
)
map() menjalankan lambda terhadap setiap elemen.
Lambda sebagai Sorting Key
sort(
key=lambda x: x[1]
)
Lambda menentukan nilai yang digunakan sebagai dasar pengurutan.
sort() Melakukan In-Place Sorting
a.sort()
mengubah list asli secara langsung.
Kesimpulan
Latihan Lambda Expressions memperlihatkan bahwa lambda tidak hanya digunakan untuk operasi matematika sederhana, tetapi juga dapat digunakan untuk menentukan perilaku tertentu pada function lain.
Pada latihan pertama:
my_list = [5, 4, 3]
square_list = list(
map(
lambda item: item ** 2,
my_list
)
)
Lambda digunakan bersama map() untuk mengkuadratkan setiap elemen.
Pada latihan kedua:
a = [
(0, 2),
(4, 3),
(9, 9),
(10, -1)
]
a.sort(
key=lambda x: x[1]
)
Lambda digunakan sebagai key untuk menentukan bahwa pengurutan dilakukan berdasarkan elemen kedua dari setiap tuple.
Dua pola penting yang perlu diingat:
map()
↓
lambda
↓
Transformasi data
dan:
sort()
↓
key
↓
lambda
↓
Menentukan dasar pengurutan