Bab ini diambil dari buku A Primer on Scientific Programming with Python oleh H. P. Langtangen, edisi ke-5, Springer, 2016 Show
Daftar bersarang adalah objek daftar di mana elemen dalam daftar dapat berupa daftar itu sendiri. Beberapa contoh akan memotivasi daftar bersarang dan mengilustrasikan operasi dasar pada daftar tersebut Tabel sebagai daftar baris atau kolomData tabel kami sejauh ini menggunakan satu daftar terpisah untuk setiap kolom. Jika ada \( n \) kolom, kita perlu \( n \) daftar objek untuk mewakili data dalam tabel. Namun, kami menganggap tabel sebagai satu entitas, bukan kumpulan kolom \( n \). Oleh karena itu wajar untuk menggunakan satu argumen untuk seluruh tabel. Ini mudah dicapai dengan menggunakan daftar bersarang, di mana setiap entri dalam daftar adalah daftar itu sendiri. Objek tabel, misalnya, adalah daftar daftar, baik daftar elemen baris tabel atau daftar elemen kolom tabel. Berikut adalah contoh di mana tabel adalah daftar dua kolom, dan setiap kolom adalah daftar angka (Perhatikan bahwa setiap nilai dalam \( [41,45] \) dapat digunakan sebagai argumen kedua (nilai berhenti) untuk 6 dan akan memastikan bahwa 40 termasuk dalam rentang angka yang dihasilkan. )Dengan subskrip _7 kita dapat mengakses elemen pertama di 8, yang tidak lain adalah daftar 9, dan dengan 0 kita mencapai elemen ketiga di elemen pertama, i. e. , 1Gambar 2. Dua cara membuat tabel sebagai daftar bersarang. Kiri. tabel kolom _2 dan 3, di mana 2 dan 3 adalah daftar. Benar. tabel baris, di mana setiap baris _6 adalah daftar dua pelampungNamun, data tabular dengan baris dan kolom biasanya memiliki konvensi bahwa data yang mendasarinya adalah daftar bersarang di mana indeks pertama menghitung baris dan indeks kedua menghitung kolom. Untuk memiliki _8 pada formulir ini, kita harus membuat 8 sebagai daftar 6 pasang. Indeks pertama kemudian akan melewati baris 6. Inilah cara kami membuat daftar bersarang Kami dapat mempersingkat segmen kode ini dengan memperkenalkan pemahaman daftar. Konstruksi ini melewati pasangan 2 dan 3, dan untuk setiap lintasan dalam loop kita membuat elemen daftar 6Subskrip 4 mengacu pada elemen kedua di 8, yang merupakan pasangan 6, sedangkan 7 adalah nilai 2 dan 9 adalah nilai 3. Gambar mengilustrasikan daftar kolom dan daftar pasangan. Dengan menggunakan gambar ini, Anda dapat menyadari bahwa indeks pertama mencari elemen di daftar terluar, dan elemen ini dapat diindeks dengan indeks kedua.Mencetak objekModul untuk cetakan objek yang cantikKami dapat menulis _1 untuk segera melihat daftar bersarang 8 dari bagian sebelumnya. Faktanya, objek Python apa pun _3 dapat dicetak ke layar dengan perintah 4. Outputnya biasanya satu baris, dan baris ini bisa menjadi sangat panjang jika daftarnya memiliki banyak elemen. Misalnya, daftar panjang seperti variabel _8 kami, membutuhkan garis yang cukup panjang saat dicetak
Memisahkan keluaran menjadi beberapa baris yang lebih pendek membuat tata letak lebih bagus dan lebih mudah dibaca. Modul _6 menawarkan fungsionalitas cetak yang cantik untuk tujuan ini. Penggunaan _6 terlihat seperti dan output yang sesuai menjadi Dengan dokumen ini muncul modul 6 yang sedikit dimodifikasi dengan nama 9. Modul ini memungkinkan kontrol format penuh pencetakan 0 objek dalam daftar dengan menentukan 1 sebagai string format printf. Contoh berikut menunjukkan bagaimana format keluaran bilangan real dapat diubah. _Seperti yang bisa dilihat dari sesi ini, modul 6 menulis bilangan floating-point dengan banyak digit, bahkan begitu banyak sehingga kita secara eksplisit melihat kesalahan pembulatan. Banyak yang menganggap jenis keluaran ini mengganggu dan bahwa keluaran default dari modul 9 lebih seperti yang diinginkan dan diharapkanModul 6 dan 9 juga memiliki fungsi 6, yang berfungsi sebagai fungsi 6, tetapi mengembalikan string yang diformat cantik alih-alih mencetak string Pernyataan 8 terakhir ini dicetak sama dengan 9Pencetakan manualBanyak yang akan berpendapat bahwa data tabular seperti yang disimpan dalam daftar 8 bersarang tidak dicetak dengan cara yang sangat cantik oleh modul 6. Orang lebih suka mengharapkan hasil yang cantik menjadi tabel dengan dua kolom yang disejajarkan dengan baik. Untuk menghasilkan keluaran seperti itu, kita perlu mengkodekan pemformatan secara manual. Ini cukup mudah. kita mengulangi setiap baris, mengekstrak dua elemen 2 dan 3 di setiap baris, dan mencetaknya dalam bidang dengan lebar tetap menggunakan sintaks printf. Kode berjalan sebagai berikut
Mengekstrak sublistPython memiliki sintaks yang bagus untuk mengekstraksi bagian dari struktur daftar. Bagian seperti itu dikenal sebagai sublist atau irisan _4 adalah sublist yang dimulai dengan indeks 5 di 6 dan berlanjut hingga akhir 6
8 adalah sublist yang dimulai dengan indeks 5 di 6 dan berlanjut hingga dan termasuk indeks 1. Pastikan Anda ingat bahwa elemen yang sesuai dengan indeks 2 tidak termasuk dalam sublist. 0 3 adalah sublist yang dimulai dengan indeks 0 di 6 dan berlanjut hingga dan termasuk elemen dengan indeks 5. 1 6 mengekstrak semua elemen kecuali yang pertama dan terakhir (ingat bahwa indeks 7 mengacu pada elemen terakhir), dan 8 adalah seluruh daftar. _2Dalam daftar bersarang, kami dapat menggunakan irisan di indeks pertama, mis. g. , _3Kita juga bisa mengiris indeks kedua, atau kedua indeks. _4Perhatikan bahwa 9 membuat daftar 0 dengan tiga elemen. Slice 1 bekerja pada sublist ini dan memilih dua elemen pertamanya, dengan indeks 0 dan 1Subdaftar selalu merupakan salinan dari daftar asli, jadi jika Anda memodifikasi subdaftar, daftar asli tetap tidak berubah dan sebaliknya 5Fakta bahwa mengiris membuat salinan juga dapat diilustrasikan dengan kode berikut. 6Ekspresi boolean 2 adalah 3 jika semua elemen di 4 sama dengan elemen yang sesuai di 6. Tes 6 adalah 3 jika 6 dan 4 adalah nama untuk daftar yang sama. Pengaturan _00 membuat 2 merujuk ke objek daftar yang sama dengan 6, sementara 03 membuat 4 merujuk ke salinan daftar yang dirujuk oleh 6ContohKami mengakhiri informasi ini pada sublists dengan menulis bagian dari 8 daftar 6 baris (lihat bagian ) di mana derajat Celcius antara 10 dan 35 (tidak termasuk 35) 7Anda harus selalu berhenti membaca dan meyakinkan diri sendiri bahwa Anda memahami mengapa segmen kode menghasilkan keluaran cetak. Dalam contoh terakhir ini, _08 mengembalikan indeks yang sesuai dengan nilai 09 dalam daftar 9. Melihat elemen _9, seseorang menyadari (melakukannya. ) bahwa 12 perulangan setara dengan 8Perulangan ini berjalan di atas indeks \( 6, 7, \ldots, 10 \) di 8Melintasi daftar bersarangKita telah melihat bahwa melintasi daftar bersarang 8 dapat dilakukan dengan pengulangan bentuk _9Ini adalah kode alami ketika kita tahu bahwa 8 adalah daftar dari 6 daftar. Sekarang kita akan membahas daftar bersarang yang lebih umum di mana kita tidak perlu tahu berapa banyak elemen yang ada di setiap elemen daftar dari daftarMisalkan kita menggunakan daftar bersarang 17 untuk mencatat skor pemain dalam sebuah game. _18 memegang daftar skor historis yang diperoleh oleh pemain nomor 5. Pemain yang berbeda telah memainkan permainan dengan jumlah yang berbeda, jadi panjang 18 tergantung pada 5. Beberapa kode dapat membantu memperjelas ini 0Daftar 17 memiliki tiga elemen, setiap elemen sesuai dengan pemain. Elemen no. _23 dalam daftar 24 sesuai dengan skor yang diperoleh dalam permainan nomor 23 dimainkan oleh pemain nomor 26. Panjang daftar _24 bervariasi dan sama dengan 4, 1, dan 8 untuk 26 masing-masing sama dengan 0, 1, dan 2Dalam kasus umum kami mungkin memiliki \( n \) pemain, dan beberapa mungkin telah memainkan permainan ini berkali-kali, membuat 17 berpotensi menjadi daftar bersarang yang besar. Bagaimana kita bisa melintasi daftar _17 dan menuliskannya dalam format tabel dengan kolom yang diformat dengan baik? . Misalnya, data yang diinisialisasi di atas dapat ditulis sebagai 1Dalam sebuah program, kita harus menggunakan dua loop bersarang, satu untuk elemen di 17 dan satu untuk elemen di sublists dari 17. Contoh di bawah ini akan memperjelasnyaAda dua cara dasar melintasi daftar bersarang. baik kita menggunakan indeks bilangan bulat untuk setiap indeks, atau kita menggunakan variabel untuk elemen daftar. Mari kita contohkan versi berbasis indeks 2Dengan tanda koma setelah string cetak, kami menghindari baris baru sehingga nilai kolom dalam tabel (i. e. , skor untuk satu pemain) muncul di baris yang sama. Perintah 8 tunggal setelah perulangan 34 menambahkan baris baru setelah setiap baris tabel. Pembaca didorong untuk melalui loop dengan tangan dan mensimulasikan apa yang terjadi di setiap pernyataan (gunakan daftar 17 sederhana yang diinisialisasi di atas)Versi alternatif tempat kami menggunakan variabel untuk mengulangi elemen dalam daftar 17 dan subdaftarnya terlihat seperti ini _3Sekali lagi, pembaca harus menelusuri kode dengan tangan dan menyadari apa nilai 37 dan 38 berada di setiap lintasan loopDalam kasus yang sangat umum, kami memiliki daftar bersarang dengan banyak indeks. _39. Untuk mengunjungi setiap elemen dalam daftar, kami menggunakan 12 bersarang sebanyak indeks. Dengan empat indeks, iterasi atas indeks bilangan bulat terlihat seperti
Bagaimana cara mencetak daftar kolom dengan Python?Untuk mencetak daftar dalam kolom. . Gunakan fungsi zip() untuk mendapatkan objek zip dari tupel Gunakan literal string yang diformat untuk memformat item di setiap tupel dalam satu baris Gunakan fungsi print() untuk mencetak hasilnya Bagaimana cara mencetak daftar berdampingan dengan Python?Tanpa menggunakan loop. * simbol digunakan untuk mencetak elemen daftar dalam satu baris dengan spasi . Untuk mencetak semua elemen dalam baris baru atau dipisahkan dengan koma, gunakan masing-masing sep=”\n” atau sep=”, ”.
Bagaimana cara mencetak daftar secara vertikal dengan Python?Metode #2. Menggunakan zip() Menggunakan fungsi zip, kita memetakan elemen pada indeks masing-masing satu sama lain dan setelah itu mencetaknya masing-masing. Ini melakukan tugas pencetakan vertikal.
Bagaimana cara mencetak bagian dari daftar dengan Python?Menggunakan simbol * untuk mencetak daftar dengan Python. Untuk mencetak isi daftar dalam satu baris dengan spasi, * atau operator splat adalah salah satu caranya. Ini meneruskan semua isi daftar ke suatu fungsi. Kami dapat mencetak semua elemen dalam baris baru atau dipisahkan oleh spasi dan untuk melakukan itu, kami menggunakan masing-masing sep=”\n” atau sep=”, ”. |