Daftar Pemahaman dengan Python

List Comprehensions Python



Pemahaman daftar sering digunakan dalam Python untuk menulis pernyataan baris tunggal yang membuat daftar atau kamus baru dengan mengulang objek yang dapat diubah. Artikel ini akan menjelaskan cara menggunakan pemahaman daftar dengan Python, dimulai dengan penjelasan dasar tentang cara kerja loop for di Python.

Untuk Loop dengan Python

Pernyataan for loop dalam Python secara berurutan mengulangi anggota objek, daftar, string, dll. Dibandingkan dengan bahasa pemrograman lain, sintaksnya jauh lebih bersih dan tidak memerlukan langkah iterasi yang ditentukan secara manual dan memulai iterasi. Meskipun ada cara untuk membuat perilakunya sama dengan bahasa pemrograman lain (tidak akan dibahas dalam artikel ini). Anda juga dapat melakukan kontrol atas perulangan for dengan menggunakan pernyataan seperti continue, break, pass, dll. Di bawah ini adalah contoh sederhana perulangan for dengan Python:







untukxdi dalam jangkauan(10):
mencetak(x)

Perulangan for di atas akan mencetak sepuluh angka mulai dari 0 dan diakhiri dengan 9.



Daftar Pemahaman

Pemahaman daftar tidak lain adalah cara singkat / ringkas untuk menulis multi-baris untuk loop dalam pernyataan satu baris. Contoh pemahaman daftar di bawah ini akan membuat daftar baru sebagai [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] dengan memasukkan semua nilai x di dalamnya.



angka= [xuntukxdi dalam jangkauan(10)]
mencetak (angka)

Perhatikan bahwa pemahaman daftar selalu membuat daftar baru dan tidak mengubah iterable asli yang digunakan dalam ekspresi. Ekspresi pemahaman daftar yang khas harus memiliki klausa for dan dapat diikuti oleh pernyataan kondisi if dan else. Tanpa menggunakan pemahaman daftar, contoh di atas akan ditulis sebagai berikut:





angka= []
untukxdi dalam jangkauan(10):
angka.menambahkan(x)

mencetak (angka)

Performa dan Keterbacaan

Pemahaman daftar lebih cepat daripada untuk loop. Namun, kecuali Anda mengulangi lebih dari ratusan ribu item, Anda tidak akan melihat peningkatan kinerja yang besar. Sementara pemahaman daftar menyediakan cara ringkas untuk menulis perulangan, ekspresi kompleks dapat menyebabkan pembacaan kode yang buruk dan peningkatan verbositas. Penting untuk menjaga agar kode tetap dapat dibaca, kecuali mencapai kinerja maksimum adalah kebutuhan mutlak untuk program Anda.

Contoh: Menggunakan Sintaks Pemahaman Daftar dengan Kamus dan Set

Kamus python adalah kumpulan elemen yang didefinisikan dalam pasangan nilai kunci sementara satu set adalah kumpulan nilai unik di mana duplikat tidak diperbolehkan. Pemahaman daftar dapat digunakan dengan kamus dan set Python juga. Sintaksnya sedikit berbeda, alih-alih membungkus ekspresi dalam kurung kurawal, Anda sekarang harus menggunakan kurung kurawal. Anda juga akan mendapatkan objek kamus/set baru alih-alih daftar baru.



data= {'kota':'baru york', 'nama':'john doe'}

diformat_data= {k:v.judul() untukke,vdi dalamdata.item()}

mencetak (diformat_data)

Contoh di atas akan mengonversi nilai string menjadi huruf besar dan membuat kamus baru bernama formatted_data, yang outputnya akan menjadi: {'city': 'New York', 'name': 'John Doe'}. Anda juga dapat mengubah kamus / set di tempat dengan menentukan variabel kamus yang ada di sisi kiri.

data= {'kota':'baru york', 'nama':'john doe'}

data= {k:v.judul() untukke,vdi dalamdata.item()}

mencetak (data)

Tanpa menggunakan pemahaman kamus, kodenya akan terlihat seperti ini:

data= {'kota':'baru york', 'nama':'john doe'}

diformat_data= {}

untukke,vdi dalamdata.item():
diformat_data[ke] =v.judul()

mencetak (diformat_data)

Karena tidak ada pasangan nilai kunci dalam set, pemahaman set dapat didefinisikan dengan cara yang sama seperti pemahaman daftar. Satu-satunya perbedaan adalah penggunaan kurung kurawal.

Contoh: Multiple For Loops dalam Pemahaman Daftar

Contoh pemahaman daftar yang disebutkan di atas adalah dasar dan menggunakan pernyataan tunggal untuk. Di bawah ini adalah contoh yang menggunakan banyak perulangan for dan pernyataan if bersyarat.

kata sifat= ['Disk', 'Eoan', 'Fokus', 'Licik']

hewan= ['Dingo', 'Cerpelai', 'Lubang', 'Berang-berang']

nama kode= [x +''+ danuntukxdi dalamkata sifatuntukdandi dalamhewanjikadan.dimulai dengan(x[0])]

mencetak (nama kode)

Kode akan menampilkan ['Disco Dingo', 'Eoan Ermine', 'Focal Fossa'] sebagai output. Dua for loop membahas kata sifat dan daftar hewan dan anggotanya digabungkan menggunakan spasi, hanya jika huruf pertama dari kedua kata itu sama. Tanpa menggunakan pemahaman daftar, kodenya akan terlihat seperti ini:

kata sifat= ['Disk', 'Eoan', 'Fokus', 'Licik']
hewan= ['Dingo', 'Cerpelai', 'Lubang', 'Berang-berang']

nama kode= []

untukxdi dalamkata sifat:
untukdandi dalamhewan:
jikadan.dimulai dengan(x[0]):
nama kode.menambahkan(x +''+ dan)

mencetak (nama kode)

Contoh: Daftar Pemahaman dengan if-else Clause

Contoh di bawah ini akan menunjukkan penggunaan pernyataan if dan else dalam pemahaman daftar.

nomor_daftar= [1, 2, 3, 4]
daftar_lain= [5, 6, 7, 8]

hasil= [benar jika (x + y)%2 == 0 lain Palsu untukxdi dalamnomor_daftaruntukdandi dalamdaftar_lain]

mencetak (hasil)

Saat mengulang melalui dua daftar, pemahaman daftar di atas memeriksa apakah jumlah pasangan elemen genap atau tidak. Menjalankan kode di atas akan menampilkan [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] sebagai output. Tanpa menggunakan pemahaman daftar, kodenya akan terlihat seperti ini:

nomor_daftar= [1, 2, 3, 4]
daftar_lain= [5, 6, 7, 8]
hasil= []

untukxdi dalamnomor_daftar:
untukdandi dalamdaftar_lain:
jika (x + y)%2 == 0:
hasil.menambahkan(benar)
lain:
hasil.menambahkan(Palsu)

mencetak (hasil)

Kesimpulan

Pemahaman daftar menyediakan cara yang bagus untuk menulis pernyataan loop yang bersih dan ringkas. Namun, mereka dapat dengan cepat menjadi kompleks dan sulit untuk dipahami jika banyak loop dan pernyataan kondisional digunakan. Pada akhirnya, ini sampai pada tingkat kenyamanan seorang programmer tetapi umumnya adalah ide yang baik untuk menulis kode yang eksplisit, mudah dibaca, dan mudah di-debug daripada menggunakan steno secara berlebihan.