Senaraikan Komprehensif dalam Python

List Comprehensions Python



Pemahaman senarai sering digunakan dalam Python untuk menulis penyataan baris tunggal yang membuat senarai atau kamus baru dengan melingkar ke atas objek yang dapat diulang-ulang. Artikel ini akan menerangkan bagaimana menggunakan pemahaman senarai di Python, bermula dengan penjelasan asas mengenai bagaimana gelung berfungsi di Python.

Untuk Gelung di Python

Pernyataan untuk gelung di Python secara berurutan mengulangi anggota objek, senarai, rentetan dll. Berbanding dengan bahasa pengaturcaraan lain, sintaksnya jauh lebih bersih dan tidak memerlukan menentukan langkah-langkah lelaran secara manual dan memulakan lelaran. Walaupun ada cara untuk menjadikan perilakunya sama dengan bahasa pengaturcaraan lain (tidak akan dibahas dalam artikel ini). Anda juga boleh menjalankan kawalan untuk gelung dengan menggunakan pernyataan seperti meneruskan, pecah, lulus dll. Berikut adalah contoh mudah untuk gelung di Python:







untukxdalam julat(10):
mencetak(x)

Gelung untuk di atas akan mencetak sepuluh nombor bermula dari 0 dan berakhir pada 9.



Senaraikan Kefahaman

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



nombor= [xuntukxdalam julat(10)]
mencetak (nombor)

Perhatikan bahawa pemahaman senarai selalu membuat senarai baru dan tidak mengubah jadual semula yang digunakan dalam ungkapan. Ungkapan pemahaman senarai khas mesti mempunyai klausa dan boleh diikuti dengan pernyataan bersyarat jika dan lain-lain. Tanpa menggunakan pemahaman senarai, contoh di atas akan ditulis dengan cara berikut:





nombor= []
untukxdalam julat(10):
nombor.tambahkan(x)

mencetak (nombor)

Prestasi dan Kebolehbacaan

Pemahaman senarai lebih pantas daripada gelung. Walau bagaimanapun, melainkan jika anda mengulangi lebih dari beratus-ratus ribu item, anda tidak akan melihat peningkatan prestasi yang besar. Walaupun pemahaman senarai menyediakan cara ringkas untuk menulis untuk gelung, ungkapan yang kompleks dapat menyebabkan pembacaan kod yang buruk dan peningkatan ketajaman. Penting untuk memastikan kod dapat dibaca, kecuali mencapai prestasi maksimum adalah keperluan mutlak untuk program anda.

Contoh: Menggunakan Sintaks Komprehensif Senarai dengan Kamus dan Set

Kamus python adalah kumpulan elemen yang ditentukan dalam pasangan kunci-nilai sementara satu set adalah kumpulan nilai unik di mana pendua tidak dibenarkan. Pemahaman senarai boleh digunakan dengan kamus dan set Python juga. Sintaksnya sedikit berbeza, bukannya membungkus ungkapan dengan pendakap persegi, anda sekarang harus menggunakan pendakap kerinting. Anda juga akan mendapat kamus / set objek baru dan bukannya senarai baru.



data= {'bandar':'new york', 'nama':'john doe'}

berformat_data= {k: v.tajuk() untukke,vdalamdata.barang()}

mencetak (berformat_data)

Contoh di atas akan menukar nilai rentetan menjadi huruf besar dan membuat kamus baru bernama formatted_data, yang outputnya adalah: {‘city’: ‘New York’, ‘name’: ‘John ​​Doe’}. Anda juga boleh menukar kamus / set di tempat dengan menentukan pembolehubah kamus yang ada di sebelah kiri.

data= {'bandar':'new york', 'nama':'john doe'}

data= {k: v.tajuk() untukke,vdalamdata.barang()}

mencetak (data)

Tanpa menggunakan pemahaman kamus, kodnya akan kelihatan seperti ini:

data= {'bandar':'new york', 'nama':'john doe'}

berformat_data= {}

untukke,vdalamdata.barang():
berformat_data[ke] =v.tajuk()

mencetak (berformat_data)

Oleh kerana tidak ada pasangan kunci-nilai dalam set, pemahaman satu set dapat didefinisikan dengan cara yang sama seperti pemahaman daftar. Satu-satunya perbezaan adalah penggunaan pendakap kerinting.

Contoh: Berganda Untuk Gelung dalam Pemahaman Senarai

Contoh pemahaman senarai yang disebutkan di atas adalah asas dan menggunakan satu untuk penyataan. Di bawah ini adalah contoh yang menggunakan beberapa untuk gelung dan pernyataan jika bersyarat.

kata sifat= ['Cakera', 'Eoan', 'Fokus', 'Berseni']

haiwan= ['Dingo', 'Ermine', 'Lubang', 'Berang-berang']

nama kod= [x +''+ danuntukxdalamkata sifatuntukdandalamhaiwansekiranyadan.bermula dengan(x[0])]

mencetak (nama kod)

Kod tersebut akan menunjukkan [‘Disco Dingo’, ‘Eoan Ermine’, ‘Focal Fossa’] sebagai output. Kedua-dua gelung itu merangkumi senarai kata sifat dan haiwan dan anggotanya digabungkan menggunakan ruang, hanya jika huruf pertama kedua-dua perkataan itu sama. Tanpa menggunakan pemahaman senarai, kodnya akan kelihatan seperti ini:

kata sifat= ['Cakera', 'Eoan', 'Fokus', 'Berseni']
haiwan= ['Dingo', 'Ermine', 'Lubang', 'Berang-berang']

nama kod= []

untukxdalamkata sifat:
untukdandalamhaiwan:
sekiranyadan.bermula dengan(x[0]):
nama kod.tambahkan(x +''+ dan)

mencetak (nama kod)

Contoh: Senarai Pemahaman dengan Klausa if-else

Contoh di bawah akan menunjukkan penggunaan pernyataan jika dan lain-lain dalam pemahaman senarai.

nombor_senarai= [1, 2, 3, 4]
senarai_ yang lain= [5, 6, 7, 8]

hasil= [Betul sekiranya (x + y)%2 == 0 yang lain Salah untukxdalamnombor_senaraiuntukdandalamsenarai_ yang lain]

mencetak (hasil)

Semasa mencari dua senarai, pemahaman senarai di atas memeriksa sama ada jumlah pasangan unsur itu sama atau tidak. Menjalankan kod di atas akan menunjukkan kepada anda [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] sebagai output. Tanpa menggunakan pemahaman senarai, kodnya akan kelihatan seperti ini:

nombor_senarai= [1, 2, 3, 4]
senarai_ yang lain= [5, 6, 7, 8]
hasil= []

untukxdalamnombor_ senarai:
untukdandalamsenarai_ lain:
sekiranya (x + y)%2 == 0:
hasil.tambahkan(Betul)
yang lain:
hasil.tambahkan(Salah)

mencetak (hasil)

Kesimpulannya

Pemahaman senarai menyediakan kaedah yang baik untuk menulis pernyataan gelung yang bersih dan ringkas. Walau bagaimanapun, mereka dapat dengan cepat menjadi kompleks dan sukar difahami jika banyak gelung dan pernyataan bersyarat digunakan. Pada akhirnya, ia mencapai tahap keselesaan pengaturcara tetapi pada umumnya adalah idea yang baik untuk menulis kod yang eksplisit, mudah dibaca, dan mudah debug dan bukannya menggunakan singkatan secara berlebihan.