Panduan Ramah bagi Pemula tentang List Comprehension di Python

Hai yang ingin menjadi programmer Python! Saya sangat senang bisa menjadi pemandu Anda dalam perjalanan yang menyenangkan ini ke dunia List Comprehension. Sebagai seseorang yang telah mengajarkan Python selama tahun, saya bisa memberitahu Anda bahwa topik ini seperti belajar superpower rahasia untuk kode Anda. Jadi, mari kita melompat masuk dan membuka fitur yang fantastis ini bersama-sama!

Python - List Comprehension

List Comprehension di Python

Bayangkan Anda berada di toko buah dan Anda perlu untuk memilih semua apel merah dari rak besar buah campuran. Itu hampir saja apa yang List Comprehension lakukan di Python – itu membantu Anda membuat daftar baru dengan mengambil item spesifik dari daftar yang ada, semua dalam satu baris kode yang rapi!

Mari kita mulai dengan contoh sederhana:

buah = ["apel", "pisang", "ceri", "kurma", "elderberry"]
buah_panjang = [buah for buah in buah if len(buah) > 5]
print(buah_panjang)

Output:

['pisang', 'ceri', 'elderberry']

Dalam contoh ini, kita membuat daftar baru buah_panjang yang berisi hanya buah dengan nama yang lebih panjang dari 5 karakter. Mari kita pecahkan:

  1. buah for buah in buah: Bagian ini seperti mengatakan "untuk setiap buah di rak buah kita"
  2. if len(buah) > 5: Ini adalah kondisi kita, seperti mengatakan "tetapi hanya jika nama buah lebih panjang dari 5 huruf"
  3. Semua itu diapit oleh tanda kurung kotak [], yang memberitahu Python untuk membuat daftar baru dengan hasilnya

Itu seperti magis, bukan? Dengan hanya satu baris, kita telah melakukan apa yang biasanya memerlukan beberapa baris menggunakan loop for tradisional.

List Comprehensions dan Lambda

Sekarang, mari kita naik level sedikit. Kadang-kadang, kita ingin melakukan lebih dari hanya memilih item; kita juga ingin mengubah mereka. Itu tempat fungsi lambda menjadi sangat berguna. Pikirkan lambda sebagai fungsi kecil yang kita dapat gunakan sewaktu-waktu.

Inilah contohnya:

angka = [1, 2, 3, 4, 5]
angka_kuadrat = [lambda x: x**2 for x in angka]
print([func() for func in angka_kuadrat])

Output:

[1, 4, 9, 16, 25]

Dalam contoh ini, kita membuat daftar fungsi lambda yang mengkuadratkan setiap angka. Kemudian, kita memanggil setiap fungsi ini untuk mendapatkan hasil akhir kita. Itu seperti memiliki tim mini-robot, masing-masing diprogram untuk mengkuadratkan angka!

Nested Loops di Python List Comprehension

Kadang-kadang, hidup menjadi sedikit lebih rumit, dan begitu juga dengan kode kita. Apa jika kita perlu bekerja dengan beberapa daftar sekaligus? Itu tempat loop bersarang di List Comprehension menjadi sangat berguna.

Ketika kita merencanakan pesta dan ingin menggabungkan buah yang berbeda dengan minuman yang berbeda:

buah = ["apel", "pisang", "ceri"]
minuman = ["jus", "smothie", "koktail"]
kombinasi = [(buah, minuman) for buah in buah for minuman in minuman]
print(kombinasi)

Output:

[('apel', 'jus'), ('apel', 'smothie'), ('apel', 'koktail'),
('pisang', 'jus'), ('pisang', 'smothie'), ('pisang', 'koktail'),
('ceri', 'jus'), ('ceri', 'smothie'), ('ceri', 'koktail')]

Kompresi ini seperti memiliki dua roda berputar, satu untuk buah dan satu untuk minuman. Untuk setiap buah, kita memutar roda minuman secara penuh, membuat semua kombinasi yang mungkin. Itu adalah mimpian perencana pesta!

Kondisional di Python List Comprehension

Sekarang, mari tambahkan beberapa pengambilan keputusan ke List Comprehension kita. Kita dapat menggunakan pernyataan if-else untuk membuat pilihan kita lebih spesifik.

Bayangkan kita mengnilai tes dan ingin mengkategorikan nilai sebagai 'lulus' atau 'gagal':

nilai = [65, 80, 90, 45, 75, 55]
hasil = ['lulus' if nilai >= 60 else 'gagal' for nilai in nilai]
print(hasil)

Output:

['lulus', 'lulus', 'lulus', 'gagal', 'lulus', 'gagal']

Di sini, kita menggunakan operator ternary (x if kondisi else y) di dalam List Comprehension kita. Itu seperti memiliki hakim kecil untuk setiap nilai, memutuskan apakah itu lulus atau gagal.

List Comprehension vs Loop For

Sekarang, Anda mungkin bertanya-tanya, "Mengapa harus repot dengan List Comprehension ketika kita punya loop for klasik yang bagus?" Pertanyaan yang bagus! Mari kita bandingkan mereka:

# Menggunakan loop for
kuadrat_loop = []
for i in range(10):
kuadrat_loop.append(i**2)

# Menggunakan list comprehension
kuadrat_comp = [i**2 for i in range(10)]

print("Hasil loop for:", kuadrat_loop)
print("Hasil list comprehension:", kuadrat_comp)

Output:

Hasil loop for: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Hasil list comprehension: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Seperti yang Anda lihat, kedua metode menghasilkan hasil yang sama. Tetapi List Comprehension melakukannya dalam satu baris, membuat kode kita lebih ringkas dan seringkali lebih mudah dibaca sekali Anda terbiasa dengan sintaksnya.

Keuntungan List Comprehension

Mari kita tutup dengan mendiskusikan mengapa List Comprehension begitu keren:

  1. Kerapatan Bacaan: Sekali Anda terbiasa dengannya, List Comprehension seringkali lebih mudah dibaca dengan sekilas.
  2. Ringkasan: Mereka memungkinkan Anda untuk menulis dalam satu baris apa yang biasanya memerlukan 3-5 baris.
  3. Kecepatan: Dalam banyak kasus, List Comprehension lebih cepat daripada loop for yang ekivalen.
  4. Fleksibilitas: Mereka dapat menggabungkan kondisi, loop bersarang, dan bahkan pemanggilan fungsi.

Inilah tabel yang ringkasan metode yang kita telah pelajari:

Metode Deskripsi Contoh
Basic List Comprehension Membuat daftar baru berdasarkan daftar yang ada [x for x in range(10)]
List Comprehension dengan Kondisi Menyaring item saat membuat daftar baru [x for x in range(10) if x % 2 == 0]
List Comprehension dengan Lambda Menggunakan fungsi kecil di komprehensi Anda [(lambda x: x**2)(x) for x in range(5)]
Nested List Comprehension Bekerja dengan beberapa daftar sekaligus [(x, y) for x in [1,2,3] for y in [3,1,4]]
List Comprehension dengan If-Else Mengambil keputusan untuk setiap item ['genap' if x % 2 == 0 else 'ganjil' for x in range(5)]

Ingat, seperti setiap alat yang kuat, List Comprehension harus digunakan dengan bijak. Meskipun mereka bagus untuk banyak situasi, kadang-kadang loop for klasik mungkin lebih sesuai, terutama untuk operasi yang lebih kompleks atau ketika kerapatan bacaan sangat penting.

Jadi, itu saja, para murid yang tercinta! Anda baru saja membuka superpower Python baru. List Comprehension mungkin terlihat sedikit sulit di awal, tetapi dengan latihan, mereka akan menjadi alami. Segera, Anda akan menulis kode yang elegan dan efisien yang akan membuat programmer lain berkata, "Wow, bagaimana Anda melakukan itu?" Tetap latihan, tetap curious, dan selamat coding!

Credits: Image by storyset