List Comprehension Python: Sintaks, Contoh, dan Kapan Harus Dihindari
Pelajari list comprehension Python langkah demi langkah: buat, saring, dan ubah list dalam satu baris, lihat waktu yang diukur dibandingkan perulangan, dan ketahui kapan perulangan for lebih mudah dibaca.
- Polanya adalah
[ekspresi for item in iterable if kondisi]. ifsederhana di akhir menyaring;if-elsedi awal memilih di antara dua nilai.- Dalam uji kami, comprehension sekitar 37% lebih cepat daripada perulangan dengan
append. - Gunakan generator expression untuk data sangat besar, dan perulangan biasa saat logikanya butuh beberapa langkah yang jelas.
List comprehension Python membuat list baru dari iterable apa pun dalam satu baris yang mudah dibaca. Alih-alih membuat list kosong, mengulanginya, lalu memanggil append, Anda menjelaskan hasil yang diinginkan.
Panduan ini bergerak dari pola dasar ke filter, perulangan bersarang, dan waktu yang kami ukur sendiri. Jika Python masih baru bagi Anda, mulailah dengan tutorial Python untuk pemula (bahasa Inggris) dan jaga lingkungan tetap rapi dengan panduan virtual environment (bahasa Inggris).
Sintaks list comprehension Python
Bacalah dari kiri ke kanan: ekspresi menjelaskan bentuk setiap item baru, bagian for menjelaskan dari mana item berasal.
squares = [x * x for x in range(6)]
print(squares) # [0, 1, 4, 9, 16, 25]
names = [" Hi ", " QA "]
clean = [n.strip().lower() for n in names]
print(clean) # ['hi', 'qa']
Hasil yang sama dengan perulangan membutuhkan tiga baris lebih banyak. Penghematan itulah intinya, selama barisnya tetap mudah dibaca.
Menyaring item dengan kondisi
Tambahkan if setelah perulangan untuk menyimpan hanya item yang lolos.
evens = [x for x in range(10) if x % 2 == 0]
print(evens) # [0, 2, 4, 6, 8]
List comprehension Python dengan if-else
Saat Anda ingin satu nilai untuk setiap item, letakkan if-else sebelum for. Bagian ini paling sering salah bagi pemula, karena else di akhir adalah kesalahan sintaks.
labels = ["even" if x % 2 == 0 else "odd" for x in range(4)]
print(labels) # ['even', 'odd', 'even', 'odd']
Aturan praktis: if di akhir membuang item, if-else di awal mengubah item. Dengan if-else, panjang list tetap sama.
Perulangan bersarang dan perataan
Beberapa klausa for dibaca dengan urutan yang sama seperti perulangan bersarang. Gunakan untuk meratakan list berisi list atau membuat pasangan.
matrix = [[1, 2, 3], [4, 5, 6]]
flat = [n for row in matrix for n in row]
print(flat) # [1, 2, 3, 4, 5, 6]
pairs = [(x, y) for x in range(1, 3) for y in "ab"]
print(pairs) # [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]
Untuk mentranspos matriks, sarangkan satu comprehension di dalam yang lain: [[r[i] for r in matrix] for i in range(3)] menghasilkan [[1, 4], [2, 5], [3, 6]]. Dua tingkat adalah batas praktis sebelum keterbacaan menurun.
Bentuk dictionary, set, dan generator
Ganti tanda kurung, dan ide yang sama membuat tipe lain.
lengths = {w: len(w) for w in ["pip", "venv", "uv"]} # {'pip': 3, 'venv': 4, 'uv': 2}
unique = {len(w) for w in ["pip", "venv", "uv", "git"]} # {2, 3, 4}
total = sum(x * x for x in range(1_000_000)) # generator, no list
Bandingkan tipe-tipenya dalam panduan kami tentang list, tuple, set, dan dictionary (bahasa Inggris).
Kecepatan dan memori: hasil ukur kami
Kami mengukur setiap versi di Python 3.13.6 dengan 100.000 bilangan bulat, mengambil yang terbaik dari lima kali percobaan. Angka Anda akan berbeda, tetapi urutannya stabil.
| Tugas | Waktu |
|---|---|
Perulangan dengan append (gandakan tiap item) | 5,18 ms |
| List comprehension (gandakan tiap item) | 3,25 ms |
list(map(lambda ...)) | 6,50 ms |
| Menyaring bilangan genap dengan perulangan | 3,62 ms |
| Menyaring bilangan genap dengan comprehension | 3,43 ms |
Comprehension jelas mengalahkan perulangan append, tetapi selisihnya mengecil saat sebagian besar waktu habis untuk kondisi. Soal memori, list satu juta bilangan bulat yang digandakan memakai sekitar 8,4 MB, sedangkan objek generator yang setara hanya 200 byte karena menghasilkan nilai satu per satu.
Kapan tidak memakai list comprehension
- Anda hanya butuh efek samping seperti mencetak atau menyimpan. Gunakan perulangan biasa; comprehension akan membuat list yang sia-sia.
- Logikanya punya beberapa langkah. Jika perlu variabel kedua atau
try, tulis perulangan atau fungsi kecil. - Datanya sangat besar. Gunakan generator expression agar Python tidak menyimpan seluruh list di memori.
- Butuh lebih dari dua klausa
for. Pecah menjadi langkah bernama untuk pembaca berikutnya.
Penutup
Gunakan list comprehension Python ketika satu baris pendek mengatakan persis maksud Anda, dan perulangan ketika tidak. Mulailah dengan pola dasar, tambahkan satu filter, lalu latih bentuk if-else sampai urutannya terasa wajar.
Pertanyaan yang sering diajukan
Apa itu list comprehension di Python?
Cara ringkas membuat list dengan menerapkan ekspresi ke setiap item dari iterable, dengan kondisi opsional untuk menyaring.
Bagaimana cara memakai if-else dalam list comprehension?
Letakkan ekspresi kondisional sebelum klausa for, misalnya ["even" if x % 2 == 0 else "odd" for x in nums]. Filter sederhana hanya memakai satu if setelah perulangan.
Apakah list comprehension lebih cepat daripada perulangan for?
Biasanya ya. Dalam uji kami dengan 100.000 item, ia sekitar 37% lebih cepat daripada perulangan dengan append, tetapi keterbacaan harus menentukan lebih dulu.
Apa bedanya list comprehension dan generator expression?
List comprehension membangun seluruh list di memori sekaligus. Generator expression memakai tanda kurung biasa dan menghasilkan satu nilai pada satu waktu, sehingga menghemat memori untuk data besar.
Bisakah list comprehension disarangkan?
Bisa, untuk meratakan atau mentranspos matriks. Batasi dua tingkat, dan beralihlah ke perulangan jika sulit dibaca.
Terus belajar (artikel bahasa Inggris)
Butuh bantuan soal pengujian, WordPress, atau SEO?
Kami membantu tim merilis perangkat lunak yang lebih baik dan mengembangkan situs mereka. Ceritakan apa yang sedang Anda kerjakan dan kami akan menyarankan langkah berikutnya yang jelas.
Panduan lebih lanjut tentang pengujian, AI & pengembangan modern
Menikmati artikel ini? Pilih topik dan langsung masuk ke tutorial terbaru kami.
Penjelasan Halusinasi AI: Mengapa Model Bahasa Memperbaiki Masalah dan Cara Menguranginya
Halusinasi AI menjelaskan: apa itu, mengapa model bahasa memproduksinya, tipe umum, cara menguranginya dengan landasan dan petunjuk, dan pemeriksaan…
Baca artikel →DevOpsPenjelasan Variabel Lingkungan: File .env, Rahasia, dan Konfigurasi Dilakukan dengan Benar
Variabel lingkungan dijelaskan dengan contoh Python yang kami jalankan: membaca dan mengaturnya, mengapa setiap nilai berupa string, file .env, pewa…
Baca artikel →Pengembangan perangkat lunakPenjelasan Pembatasan Kecepatan API: Algoritma, Header, dan Penanganan 429 Kesalahan
Pembatasan laju API dijelaskan dengan simulasi yang kami jalankan: keranjang token, jendela tetap, jendela geser, respons 429, header batas laju, pe…
Baca artikel →Otomatisasi pengujianMengejek dengan Python: unittest.mock, patch dan Kesalahan yang Membuat Tes Berbohong
Mengejek dengan Python dengan unittest.mock, menguji: Mock dan return_value, side_effect, menambal di mana nama digunakan, spesifikasi dan autospec,…
Baca artikel →Pengujian perangkat lunakPenjelasan Cakupan Kode: Cakupan Jalur vs Cabang dan Apa Arti 100% Sebenarnya
Cakupan kode dijelaskan dengan coverage.py yang sebenarnya dijalankan: cakupan garis, cabang dan kondisi, membaca laporan, mengapa cakupan 100% masi…
Baca artikel →Basis data & SQLDELETE vs TRUNCATE vs DROP dalam SQL: Perbedaan, Rollback dan Kapan Menggunakan Masing-Masing
DELETE vs TRUNCATE vs DROP dijelaskan dengan SQL yang diuji: apa yang dihapus, rollback, pemicu, reset identitas, kecepatan, dan perbedaan PostgreSQ…
Baca artikel →Basis data & SQLPenjelasan Tampilan SQL: Membuat, Menggunakan, dan Menghindari Kesalahan, Dengan Contoh
Tampilan SQL dijelaskan dengan kueri yang kami jalankan: membuat tampilan, hasil langsung, menyembunyikan kolom, kinerja, tampilan yang dapat diperb…
Baca artikel →Pengembangan perangkat lunakAntarmuka TypeScript vs Tipe: Perbedaan Nyata, Diuji Dengan Kompiler
Antarmuka TypeScript vs tipe, diperiksa dengan kompiler sebenarnya: apa yang bisa dilakukan keduanya, apa yang hanya bisa dilakukan satu orang, peng…
Baca artikel →Pengembangan perangkat lunakPenjelasan Python *args dan **kwargs: Fungsi Fleksibel Dengan Contoh Jelas
Python *args dan **kwargs dijelaskan dengan kode yang kami jalankan: pengepakan dan pembongkaran, urutan parameter, argumen hanya kata kunci dan pos…
Baca artikel →Pengembangan perangkat lunakFungsi Python Lambda: Sintaks, Kegunaan Sebenarnya, dan Kapan Tidak Digunakan
Fungsi python lambda dijelaskan dengan kode yang kami jalankan: sintaksis, pengurutan dengan kunci, peta dan filter, penutupan, jebakan pengikatan a…
Baca artikel →Kecerdasan buatanApa Itu Agen AI? Cara Kerjanya, Dengan Agent Loop Sederhana yang Dapat Anda Jalankan
Apa itu agen AI? Panduan sederhana tentang loop agen, alat, memori, dan pagar pembatas, dengan loop Python kecil yang kami jalankan, risiko nyata da…
Baca artikel →DevOpsPemantauan vs Observabilitas: Perbedaan Nyata, Dengan Log, Metrik, dan Jejak
Penjelasan pemantauan vs observabilitas: kegagalan yang diketahui dan tidak diketahui, log, metrik dan jejak, penelusuran insiden checkout, sinyal e…
Baca artikel →DevOpsVolume Docker vs Bind Mounts: Pertahankan Data Kontainer dengan Cara yang Benar
Volume Docker vs pengikatan pengikat dijelaskan: mengapa data kontainer menghilang, volume yang diberi nama, pengikatan pengikatan, tmpfs, contoh Tu…
Baca artikel →Otomatisasi pengujianTDD vs BDD: Perbedaan Utama, Satu Fitur Dibangun dengan Dua Cara dan Kapan Menggunakan Masing-masing
TDD vs BDD dijelaskan dengan satu fitur diskon yang dibuat dengan dua cara: refactor merah-hijau dengan kode yang kami jalankan, skenario Mengingat-…
Baca artikel →Pengembangan perangkat lunakGit merge vs rebase: perbedaan, contoh, dan kapan memakai masing-masing
Git merge vs rebase dijelaskan dengan keluaran log nyata, tabel perbandingan, aturan emas rebase, dan alur kerja tim yang aman.
Baca artikel →Pengembangan perangkat lunakList Comprehension Python: Sintaks, Contoh, dan Kapan Harus Dihindari
List comprehension Python dijelaskan: sintaks, filter, if-else, perulangan bersarang, waktu yang diukur, dan kapan perulangan for biasa lebih baik.
Baca artikel →Basis data & SQLPenjelasan SQL JOIN dengan Contoh (Inner, Left, Right, Full)
Pahami SQL JOIN langkah demi langkah dengan tabel dan query contoh: INNER, LEFT, RIGHT, FULL, CROSS, dan SELF, plus kesalahan umum dan tips performa.
Baca artikel →