lsit pengeluaran (senarai pengeluaran)
1. Cara membuat senarai
Selepas kajian sebelum ini, kita semua tahu cara membuat senarai, tetapi dalam beberapa kes, terlalu menyusahkan untuk membuat senarai dalam bentuk tugasan, terutamanya senarai biasa, yang mesti ditulis satu per satu, memberikan nilai satu per satu terlalu menyusahkan. Sebagai contoh, anda ingin menjana senarai dengan 30 elemen, dan elemen di dalamnya ialah 1 - 30. Kita boleh menulis seperti ini:
# -*- coding: UTF-8 -*- list1=list ( range (1,31) ) print(list1)
Hasil keluaran:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
Ini sebenarnya telah disebut sebelum ini: Sebagai contoh, terdapat contoh untuk mencetak jadual pendaraban ini hanya memerlukan beberapa baris kod butiran. Bab sebelumnya: Contoh komprehensif pernyataan bersyarat dan pernyataan gelung
Walau bagaimanapun, jika penjanaan senarai digunakan, jadual pendaraban boleh dijana dalam satu baris kod. Lihat kod secara khusus:
print('\n'.join([' '.join ('%dx%d=%2d' % (x,y,x*y) for x in range(1,y+1)) for y in range(1,10)]))
Hasil keluaran akhir:
1x1= 1 1x2= 2 2x2= 4 1x3= 3 2x3= 6 3x3= 9 1x4= 4 2x4= 8 3x4=12 4x4=16 1x5= 5 2x5=10 3x5=15 4x5=20 5x5=25 1x6= 6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36 1x7= 7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49 1x8= 8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64 1x9= 9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
Namun, di sini kita perlu memahami cara membuat penjanaan senarai
2 Penciptaan penjanaan senarai
Pertama sekali, sintaks. daripada generasi lsit ialah:
[expr for iter_var in iterable] [expr for iter_var in iterable if cond_expr]
Sintaks pertama: mula-mula lelaran semua kandungan dalam iterable Untuk setiap lelaran, letakkan kandungan yang sepadan dalam iterable ke dalam iter_var, kemudian gunakan kandungan iter_var dalam ungkapan, dan akhirnya gunakan nilai yang dikira. daripada ungkapan untuk menjana senarai .
Sintaks kedua: Pernyataan penghakiman ditambah Hanya kandungan yang memenuhi syarat dimasukkan ke dalam iterable dan kandungan yang sepadan dimasukkan ke dalam iter_var, dan kemudian kandungan iter_var digunakan pada ungkapan, dan akhirnya senarai dijana menggunakan. nilai yang dikira bagi ungkapan.
Sebenarnya, ia tidak sukar untuk difahami, kerana ia adalah generasi senarai, jadi ia mesti disertakan dengan [], dan kemudian pernyataan di dalamnya meletakkan elemen yang akan dijana di hadapan, diikuti dengan pernyataan gelung for atau a untuk pernyataan gelung dan pernyataan penghakiman.
Contoh:
# -*- coding: UTF-8 -*- lsit1=[x * x for x in range(1, 11)] print(lsit1)
Hasil keluaran:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Seperti yang anda lihat, senarai boleh dibuat dengan meletakkan elemen x * x untuk dijana di hadapan, diikuti dengan gelung for. Jadi bagaimana dengan bentuk jika selepas gelung for? Bagaimana untuk memahami:
# -*- coding: UTF-8 -*- lsit1= [x * x for x in range(1, 11) if x % 2 == 0] print(lsit1)
Hasil keluaran:
[4, 16, 36, 64, 100]
Contoh ini adalah untuk mencari punca kuasa dua nombor genap dari 1 hingga 10. Seperti yang dinyatakan di atas, x * x ialah elemen yang akan dijana, dan bahagian terakhir ialah sebenarnya dalam gelung for Terdapat pernyataan penghakiman jika bersarang di dalamnya.
Jadi dengan pengetahuan ini, kita juga boleh mengagak bahawa terdapat juga untuk gelung bersarang di dalam gelung for. Contoh khusus:
# -*- coding: UTF-8 -*- lsit1= [(x+1,y+1) for x in range(3) for y in range(5)] print(lsit1)
Hasil keluaran:
[(1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5)]
Sebenarnya, tidak sukar untuk memahami perkara ini apabila anda tahu bagaimana formula pengeluaran senarai digabungkan. Kerana penjanaan senarai hanya menggabungkan mata pengetahuan yang dipelajari sebelum ini dan menggantikannya dengan cara penulisan yang lebih ringkas.