Python terkenal karena memungkinkan Anda menulis kode yang elegan, mudah ditulis, dan hampir semudah membaca bahasa Inggris biasa. Salah satu fitur bahasa yang paling khas adalah pemahaman daftar, yang dapat Anda gunakan untuk membuat fungsionalitas yang kuat dalam satu baris kode. Namun, banyak pengembang berjuang untuk sepenuhnya memanfaatkan fitur yang lebih canggih dari pemahaman daftar di Python. Beberapa pemrogram bahkan menggunakannya terlalu banyak, yang dapat menyebabkan kode menjadi kurang efisien dan sulit dibaca Show
Di akhir tutorial ini, Anda akan memahami kekuatan penuh pemahaman daftar Python dan cara menggunakan fiturnya dengan nyaman. Anda juga akan mendapatkan pemahaman tentang trade-off yang menyertai penggunaannya sehingga Anda dapat menentukan kapan pendekatan lain lebih disukai Dalam tutorial ini, Anda akan mempelajari caranya
Download Gratis. Dapatkan contoh bab dari Trik Python. Buku yang menunjukkan kepada Anda praktik terbaik Python dengan contoh sederhana yang dapat Anda terapkan secara instan untuk menulis kode + Pythonic yang lebih indah Cara Membuat Daftar dengan PythonAda beberapa cara berbeda untuk membuat daftar dengan Python. Untuk lebih memahami trade-off menggunakan pemahaman daftar di Python, pertama-tama mari kita lihat cara membuat daftar dengan pendekatan ini Hilangkan iklanMenggunakan >>> squares = [i * i for i in range(10)] >>> squares [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] _6 LoopsJenis loop yang paling umum adalah 6 loop. Anda dapat menggunakan 6 loop untuk membuat daftar elemen dalam tiga langkah
Jika Anda ingin membuat daftar yang berisi sepuluh kuadrat sempurna pertama, Anda dapat menyelesaikan langkah-langkah ini dalam tiga baris kode >>> _Di sini, Anda memberi contoh daftar kosong, 9. Kemudian, Anda menggunakan _6 loop untuk mengulangi 1. Terakhir, Anda mengalikan setiap angka dengan angka itu sendiri dan menambahkan hasilnya di akhir daftarMenggunakan >>> squares = [i * i for i in range(10)] >>> squares [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] _3 Objek 3 memberikan pendekatan alternatif yang didasarkan pada pemrograman fungsional. Anda meneruskan fungsi dan iterable, dan 3 akan membuat objek. Objek ini berisi keluaran yang akan Anda dapatkan dari menjalankan setiap elemen iterable melalui fungsi yang disediakanSebagai contoh, pertimbangkan situasi di mana Anda perlu menghitung harga setelah pajak untuk daftar transaksi >>> _Di sini, Anda memiliki iterable _5 dan fungsi 6. Anda meneruskan kedua argumen ini ke _3, dan menyimpan objek yang dihasilkan di 8. Anda dapat dengan mudah mengonversi objek peta ini menjadi daftar menggunakan 9Menggunakan Pemahaman DaftarPemahaman daftar adalah cara ketiga untuk membuat daftar. Dengan pendekatan elegan ini, Anda dapat menulis ulang 6 loop dari contoh pertama hanya dalam satu baris kode>>> ________0______ Daripada membuat daftar kosong dan menambahkan setiap elemen ke akhir, Anda cukup menentukan daftar dan isinya pada saat yang sama dengan mengikuti format ini >>> _Setiap pemahaman daftar dalam Python mencakup tiga elemen
Karena persyaratan ekspresi sangat fleksibel, pemahaman daftar di Python bekerja dengan baik di banyak tempat di mana Anda akan menggunakan 3. Anda dapat menulis ulang contoh penetapan harga dengan pemahaman daftarnya sendiri>>> _Satu-satunya perbedaan antara implementasi ini dan 3 adalah bahwa pemahaman daftar di Python mengembalikan daftar, bukan objek petaHilangkan iklanManfaat Menggunakan Pemahaman DaftarDaftar pemahaman sering digambarkan sebagai lebih Pythonic dari loop atau 3. Namun daripada menerima begitu saja penilaian itu, ada baiknya untuk memahami manfaat menggunakan pemahaman daftar dengan Python jika dibandingkan dengan alternatifnya. Nanti, Anda akan belajar tentang beberapa skenario di mana alternatifnya adalah pilihan yang lebih baikSalah satu manfaat utama menggunakan pemahaman daftar di Python adalah bahwa ini adalah alat tunggal yang dapat Anda gunakan dalam banyak situasi berbeda. Selain pembuatan daftar standar, pemahaman daftar juga dapat digunakan untuk pemetaan dan pemfilteran. Anda tidak harus menggunakan pendekatan yang berbeda untuk setiap skenario Ini adalah alasan utama mengapa pemahaman daftar dianggap Pythonic, karena Python mencakup alat sederhana dan kuat yang dapat Anda gunakan dalam berbagai macam situasi. Sebagai manfaat tambahan, setiap kali Anda menggunakan pemahaman daftar dengan Python, Anda tidak perlu mengingat urutan argumen yang tepat seperti saat Anda memanggil 3Pemahaman daftar juga lebih bersifat deklaratif daripada loop, yang artinya lebih mudah dibaca dan dipahami. Loops mengharuskan Anda untuk fokus pada bagaimana daftar dibuat. Anda harus membuat daftar kosong secara manual, mengulang elemen, dan menambahkan masing-masing ke akhir daftar. Dengan pemahaman daftar di Python, Anda bisa fokus pada apa yang ingin Anda masuki dalam daftar dan percaya bahwa Python akan mengurus bagaimana konstruksi daftar berlangsung Cara Meningkatkan Pemahaman AndaUntuk memahami nilai penuh yang dapat diberikan oleh pemahaman daftar, akan sangat membantu untuk memahami berbagai kemungkinan fungsionalitasnya. Anda juga ingin memahami perubahan yang terjadi pada pemahaman daftar di Python 3. 8 Menggunakan Logika BersyaratSebelumnya, Anda melihat rumus ini untuk cara membuat pemahaman daftar >>> _Meskipun rumus ini akurat, namun juga agak tidak lengkap. Deskripsi yang lebih lengkap dari rumus pemahaman menambahkan dukungan untuk persyaratan opsional. Cara paling umum untuk menambahkan logika bersyarat ke pemahaman daftar adalah dengan menambahkan kondisional di akhir ekspresi >>> _Di sini, pernyataan bersyarat Anda muncul tepat sebelum tanda kurung tutup Persyaratan penting karena memungkinkan pemahaman daftar untuk memfilter nilai yang tidak diinginkan, yang biasanya memerlukan panggilan ke 5>>> _Di blok kode ini, pernyataan bersyarat memfilter karakter apa pun di 2 yang bukan vokalKondisional dapat menguji ekspresi apa pun yang valid. Jika Anda memerlukan filter yang lebih kompleks, Anda bahkan dapat memindahkan logika kondisional ke fungsi terpisah >>> _Di sini, Anda membuat filter kompleks _3 dan meneruskan fungsi ini sebagai pernyataan bersyarat untuk pemahaman daftar Anda. Perhatikan bahwa nilai anggota _4 juga diteruskan sebagai argumen ke fungsi AndaAnda dapat menempatkan persyaratan di akhir pernyataan untuk pemfilteran sederhana, tetapi bagaimana jika Anda ingin mengubah nilai anggota alih-alih memfilternya? >>> _Dengan rumus ini, Anda dapat menggunakan logika bersyarat untuk memilih dari beberapa kemungkinan opsi keluaran. Misalnya, jika Anda memiliki daftar harga, Anda mungkin ingin mengganti harga negatif dengan 5 dan membiarkan nilai positif tidak berubah>>> 0Di sini, ekspresi Anda _4 berisi pernyataan bersyarat, 7. Ini memberitahu Python untuk menampilkan nilai 4 jika angkanya positif, tetapi untuk mengubah 4 menjadi 5 jika angkanya negatif. Jika ini tampak berlebihan, maka mungkin berguna untuk melihat logika kondisional sebagai fungsinya sendiri>>> 1Sekarang, pernyataan bersyarat Anda terkandung dalam 1, dan Anda dapat menggunakannya sebagai bagian dari ekspresi pemahaman daftar AndaHilangkan iklanMenggunakan Pemahaman Set dan KamusSementara pemahaman daftar di Python adalah alat yang umum, Anda juga bisa membuat pemahaman set dan kamus. Pemahaman set hampir persis sama dengan pemahaman daftar di Python. Perbedaannya adalah set pemahaman memastikan output tidak mengandung duplikat. Anda dapat membuat pemahaman set dengan menggunakan kurung kurawal, bukan tanda kurung >>> 2Pemahaman set Anda menampilkan semua vokal unik yang ditemukan di 2. Tidak seperti daftar, kumpulan tidak menjamin bahwa item akan disimpan dalam urutan tertentu. Inilah sebabnya mengapa anggota pertama dari himpunan adalah 3, meskipun vokal pertama di 2 adalah 4Pemahaman kamus serupa, dengan persyaratan tambahan untuk menentukan kunci >>> 3Untuk membuat kamus 9, Anda menggunakan kurung kurawal ( 7) serta pasangan kunci-nilai ( 8) dalam ekspresi AndaMenggunakan Operator WalrusPiton 3. 8 akan memperkenalkan ekspresi penugasan, juga dikenal sebagai operator walrus. Untuk memahami bagaimana Anda dapat menggunakannya, pertimbangkan contoh berikut Katakanlah Anda perlu membuat sepuluh permintaan ke API yang akan mengembalikan data suhu. Anda hanya ingin mengembalikan hasil yang lebih besar dari 100 derajat Fahrenheit. Asumsikan bahwa setiap permintaan akan mengembalikan data yang berbeda. Dalam hal ini, tidak ada cara untuk menggunakan pemahaman daftar di Python untuk menyelesaikan masalah. Rumus _9 tidak memberikan cara bagi kondisional untuk menetapkan data ke variabel yang dapat diakses oleh ekspresiOperator walrus memecahkan masalah ini. Ini memungkinkan Anda menjalankan ekspresi sekaligus menetapkan nilai output ke variabel. Contoh berikut menunjukkan bagaimana ini mungkin, menggunakan 0 untuk menghasilkan data cuaca palsu>>> 4Anda tidak perlu sering menggunakan ekspresi penugasan di dalam pemahaman daftar dengan Python, tetapi ini adalah alat yang berguna untuk Anda miliki saat diperlukan Kapan Tidak Menggunakan Pemahaman Daftar dengan PythonPemahaman daftar berguna dan dapat membantu Anda menulis kode elegan yang mudah dibaca dan di-debug, tetapi itu bukan pilihan yang tepat untuk semua keadaan. Mereka mungkin membuat kode Anda berjalan lebih lambat atau menggunakan lebih banyak memori. Jika kode Anda kurang berkinerja atau lebih sulit dipahami, mungkin lebih baik memilih alternatif Perhatikan Pemahaman BersarangPemahaman dapat disarangkan untuk membuat kombinasi daftar, kamus, dan set dalam koleksi. Misalnya, laboratorium iklim melacak suhu tinggi di lima kota berbeda untuk minggu pertama bulan Juni. Struktur data yang sempurna untuk menyimpan data ini bisa berupa pemahaman daftar Python yang bersarang di dalam pemahaman kamus >>> 5Anda membuat koleksi luar 1 dengan pemahaman kamus. Ekspresinya adalah pasangan kunci-nilai, yang berisi pemahaman lain. Kode ini akan dengan cepat menghasilkan daftar data untuk setiap kota di 2Daftar bersarang adalah cara umum untuk membuat matriks, yang sering digunakan untuk tujuan matematika. Lihatlah blok kode di bawah ini >>> 6Pemahaman daftar luar _3 membuat enam baris, sedangkan pemahaman daftar dalam 4 mengisi setiap baris ini dengan nilaiSejauh ini, tujuan dari setiap pemahaman bersarang cukup intuitif. Namun, ada situasi lain, seperti perataan daftar bersarang, di mana logikanya membuat kode Anda lebih membingungkan. Ambil contoh ini, yang menggunakan pemahaman daftar bersarang untuk meratakan matriks >>> 7Kode untuk meratakan matriks ringkas, tetapi mungkin tidak begitu intuitif untuk memahami cara kerjanya. Di sisi lain, jika Anda menggunakan 6 loop untuk meratakan matriks yang sama, maka kode Anda akan jauh lebih mudah>>> ________13______8 Sekarang Anda dapat melihat bahwa kode melintasi satu baris matriks pada satu waktu, menarik keluar semua elemen di baris tersebut sebelum berpindah ke baris berikutnya. Meskipun pemahaman daftar bersarang satu baris mungkin tampak lebih Pythonic, yang paling penting adalah menulis kode yang mudah dipahami dan dimodifikasi oleh tim Anda. Ketika Anda memilih pendekatan Anda, Anda harus membuat penilaian berdasarkan apakah menurut Anda pemahaman membantu atau merugikan keterbacaan Hilangkan iklanPilih Generator untuk Kumpulan Data BesarPemahaman daftar di Python bekerja dengan memuat seluruh daftar keluaran ke dalam memori. Untuk daftar berukuran kecil atau bahkan sedang, ini biasanya baik-baik saja. Jika Anda ingin menjumlahkan kuadrat dari seribu bilangan bulat pertama, pemahaman daftar akan menyelesaikan masalah ini dengan mengagumkan >>> 9Tetapi bagaimana jika Anda ingin menjumlahkan kuadrat dari satu miliar bilangan bulat pertama? . Itu karena Python mencoba membuat daftar dengan satu miliar bilangan bulat, yang menghabiskan lebih banyak memori daripada yang diinginkan komputer Anda. Komputer Anda mungkin tidak memiliki sumber daya yang diperlukan untuk menghasilkan daftar yang sangat besar dan menyimpannya di memori. Jika Anda tetap mencoba melakukannya, maka mesin Anda dapat melambat atau bahkan macet Ketika ukuran daftar menjadi bermasalah, seringkali berguna untuk menggunakan generator daripada pemahaman daftar dengan Python. Generator tidak membuat struktur data tunggal yang besar di memori, melainkan mengembalikan iterable. Kode Anda dapat meminta nilai berikutnya dari iterable sebanyak yang diperlukan atau sampai Anda mencapai akhir urutan Anda, sementara hanya menyimpan satu nilai pada satu waktu Jika Anda menjumlahkan miliar kuadrat pertama dengan generator, maka program Anda mungkin akan berjalan untuk sementara waktu, tetapi tidak akan menyebabkan komputer Anda macet. Contoh di bawah ini menggunakan generator >>> 0Anda dapat mengetahui bahwa ini adalah generator karena ekspresi tidak diapit oleh tanda kurung atau kurung kurawal. Opsional, generator dapat dikelilingi oleh tanda kurung Contoh di atas masih membutuhkan banyak pekerjaan, tetapi melakukan operasi dengan malas. Karena evaluasi yang lambat, nilai hanya dihitung saat diminta secara eksplisit. Setelah generator menghasilkan nilai (misalnya, 6), generator dapat menambahkan nilai tersebut ke jumlah yang berjalan, lalu membuang nilai tersebut dan menghasilkan nilai berikutnya ( 7). Saat fungsi penjumlahan meminta nilai berikutnya, siklus akan dimulai kembali. Proses ini membuat jejak memori tetap kecil 3 juga beroperasi dengan malas, artinya memori tidak akan menjadi masalah jika Anda memilih untuk menggunakannya dalam kasus ini>>> 1Terserah Anda apakah Anda lebih suka ekspresi generator atau 3Profil untuk Mengoptimalkan PerformaJadi, pendekatan mana yang lebih cepat? . Jika tidak, biasanya yang terbaik adalah memilih pendekatan apa pun yang mengarah ke kode terbersih Jika Anda berada dalam skenario di mana kinerja itu penting, biasanya yang terbaik adalah membuat profil pendekatan yang berbeda dan mendengarkan datanya. 0 adalah perpustakaan yang berguna untuk mengatur waktu berapa lama waktu yang dibutuhkan untuk menjalankan potongan kode. Anda dapat menggunakan 0 untuk membandingkan runtime 3, 6 loop, dan daftar pemahaman>>> 2Di sini, Anda menentukan tiga metode yang masing-masing menggunakan pendekatan berbeda untuk membuat daftar. Kemudian, Anda memberi tahu _0 untuk menjalankan masing-masing fungsi tersebut masing-masing 100 kali. 0 mengembalikan total waktu yang diperlukan untuk menjalankan 100 eksekusi tersebutSeperti yang ditunjukkan oleh kode, perbedaan terbesar adalah antara pendekatan berbasis loop dan 3, dengan loop membutuhkan waktu 50% lebih lama untuk dieksekusi. Apakah ini penting atau tidak tergantung pada kebutuhan aplikasi AndaKesimpulanDalam tutorial ini, Anda belajar cara menggunakan pemahaman daftar di Python untuk menyelesaikan tugas kompleks tanpa membuat kode Anda terlalu rumit Sekarang kamu bisa
Setiap kali Anda harus memilih metode pembuatan daftar, cobalah beberapa penerapan dan pertimbangkan apa yang paling mudah dibaca dan dipahami dalam skenario spesifik Anda. Jika kinerja itu penting, maka Anda dapat menggunakan alat pembuatan profil untuk memberi Anda data yang dapat ditindaklanjuti alih-alih mengandalkan firasat atau tebakan tentang mana yang paling berhasil. Ingatlah bahwa sementara pemahaman daftar Python mendapat banyak perhatian, intuisi dan kemampuan Anda untuk menggunakan data saat dibutuhkan akan membantu Anda menulis kode bersih yang melayani tugas yang ada. Ini, pada akhirnya, adalah kunci untuk membuat kode Pythonic Anda Tandai sebagai Selesai Tonton Sekarang Tutorial ini memiliki kursus video terkait yang dibuat oleh tim Real Python. Tonton bersama dengan tutorial tertulis untuk memperdalam pemahaman Anda. Memahami Pemahaman Daftar Python 🐍 Trik Python 💌 Dapatkan Trik Python singkat & manis yang dikirim ke kotak masuk Anda setiap beberapa hari. Tidak pernah ada spam. Berhenti berlangganan kapan saja. Dikuratori oleh tim Real Python Kirimi Saya Trik Python » Tentang James Timmins James adalah konsultan perangkat lunak dan pengembang Python. Ketika dia tidak sedang menulis Python, dia biasanya menulis tentang itu dalam bentuk blog atau buku » Lebih lanjut tentang YakobusSetiap tutorial di Real Python dibuat oleh tim pengembang sehingga memenuhi standar kualitas tinggi kami. Anggota tim yang mengerjakan tutorial ini adalah Aldren Geir Arne Jaya Joanna Mike Master Keterampilan Python Dunia Nyata Dengan Akses Tanpa Batas ke Python Nyata Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas pakar Pythonista Tingkatkan Keterampilan Python Anda » Guru Keterampilan Python Dunia Nyata Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas ahli Pythonista Tingkatkan Keterampilan Python Anda » Bagaimana menurut anda? Nilai artikel ini Tweet Bagikan Bagikan EmailApa takeaway # 1 Anda atau hal favorit yang Anda pelajari? Kiat Berkomentar. Komentar yang paling berguna adalah yang ditulis dengan tujuan belajar dari atau membantu siswa lain. dan dapatkan jawaban atas pertanyaan umum di portal dukungan kami Bisakah saya memanggil fungsi dari daftar dengan Python?Jawaban. Ya, variabel di for dari daftar pemahaman dapat digunakan sebagai parameter untuk suatu fungsi .
Bagaimana Anda mengakses data dari daftar dengan Python?Daftar literal ditulis dalam tanda kurung siku [ ]. Daftar berfungsi mirip dengan string -- gunakan fungsi len() dan tanda kurung siku [ ] untuk mengakses data, dengan elemen pertama pada indeks 0 . (Lihat python resmi. dokumen daftar org. )
Bagaimana Anda mengambil nilai dari daftar dengan Python?Metode #3. Menggunakan enumerate() Ini adalah metode yang paling elegan untuk melakukan masalah khusus ini dan sangat disarankan untuk digunakan jika kita perlu mendapatkan indeks bersama . Metode ini menghitung indeks beserta nilainya.
Bagaimana Anda memanggil fungsi di dalam daftar dengan Python?Jawaban. Anda dapat menggunakan ekspresi apa pun di dalam pemahaman daftar, termasuk fungsi dan metode . Ekspresi dapat berupa bilangan bulat 42 , perhitungan numerik 2+2 (=4) , atau bahkan pemanggilan fungsi np. sum(x) pada setiap iterable x. Fungsi apa pun tanpa nilai pengembalian, mengembalikan Tidak ada per default. |