Enumerasi dengan itertools
Hasil darab, gabungan dan permutasi.
Enumerasi dengan itertools ialah pelajaran Competitive Programming Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Competitive Programming Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Competitive Programming Academy merangkumi sejumlah 4 pelajaran.
Biarkan itertools Mengendalikan Gelung
itertools Python menjana combinations dan susunan untuk anda, jadi anda menulis lebih sedikit kod gelung dan membuat lebih sedikit kesilapan. 🙂
Import Dahulu
Semua fungsi berada dalam satu modul, jadi mulakan dengan import itertools. Kemudian anda boleh memanggil product, permutations dan combinations secara langsung.
import itertoolsproduct untuk Gelung Bersarang
Gunakan product untuk menggantikan gelung bersarang yang mendalam bagi pilihan yang sama. Ia menghasilkan setiap tupel pilihan merentasi julat yang diberikan.
for combo in itertools.product(range(3), repeat=2):
print(combo)permutations untuk Susunan
Apabila susunan penting, permutations menyenaraikan setiap aturan item. Ia amat sesuai untuk kaedah cuba semua kecil bergaya masalah jurujual kembara.
for p in itertools.permutations([1, 2, 3]):
print(p)combinations untuk Pemilihan
Apabila susunan tidak penting, combinations memilih setiap kumpulan bersaiz r. Sesuai untuk memilih subhimpunan item untuk diuji.
for c in itertools.combinations([1, 2, 3, 4], 2):
print(c)Permutations berbanding Combinations
Perbezaan utama ialah susunan: permutations menganggap (1,2) dan (2,1) sebagai berbeza, manakala combinations mengiranya sebagai pilihan yang sama.
Perhatikan Pertumbuhan
Permutations berkembang seperti n!, lalu meningkat dengan pantas. Malah n bersamaan 11 sudah melebihi empat puluh juta susunan, jadi pastikan n kecil.
Fungsi Ini Bersifat Malas
Fungsi-fungsi ini ialah penjana: fungsi tersebut menghasilkan satu item pada satu masa tanpa membina senarai gergasi, jadi penggunaan memori kekal rendah semasa anda melakukan gelung.
Gabungkan dengan Semakan
Jana calon, kemudian simpan hanya calon yang melepasi ujian anda. Corak ini menukarkan carian yang sukar kepada gelung pendek yang mudah dibaca.
best = min(itertools.permutations(cities), key=tour_length)combinations_with_replacement
Perlu memilih item yang boleh berulang? Gunakan combinations_with_replacement untuk membenarkan elemen yang sama muncul lebih daripada sekali dalam satu kumpulan.
Pilih Alat yang Tepat
Tanya dua soalan: adakah susunan penting, dan bolehkah item berulang? Jawapan itu terus menunjukkan fungsi itertools yang betul.
Semak Pantas
Anda perlu menyenaraikan setiap cara memilih 3 daripada 6 item apabila susunan tidak penting.
Ulang Kaji
Gunakan product, permutations dan combinations untuk menyenaraikannya dengan kemas. Buat pilihan dengan bertanya sama ada susunan penting dan sama ada item berulang, serta perhatikan pertumbuhannya. 🚀
Pelajari Python dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Enumerasi dengan itertools” percuma?
Ya — teks penuh “Enumerasi dengan itertools” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Competitive Programming Academy, tingkat taraf kepada CoddyKit PRO. Kursus Competitive Programming Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Enumerasi dengan itertools”?
Hasil darab, gabungan dan permutasi. Anda berlatih Competitive Programming Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Competitive Programming Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Competitive Programming Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Enumerasi dengan itertools” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Competitive Programming Academy ini?
Ya. Setiap pelajaran Competitive Programming Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Brute Force ialah Strategi yang Sah
- Enumerasi dengan itertools
- Enumerasi Subset dengan Bitmask
- Kecilkan Ruang Carian dengan Bijak