Menyingkap Konsep Pemahaman Penjana
Pemahaman penjana, seperti pemahaman senarai rakan sejawat mereka yang lebih terkenal, ialah alat berkuasa dalam Python untuk cekap menjana jujukan.
Bagaimana Mereka Bekerja?
Apabila anda mencipta pemahaman penjana, anda pada asasnya mencipta ungkapan yang menjana item satu demi satu, dengan malas kerana anda memerlukannya. Tidak seperti pemahaman senarai, yang menyimpan semua item yang dijana dalam memori sekaligus, pemahaman penjana hanya menghasilkan item seterusnya atas permintaan.
Pertimbangkan contoh berikut:
>>> my_list = [1, 3, 5, 9, 2, 6] >>> filtered_list = [item for item in my_list if item > 3] # List comprehension >>> print(filtered_list) [5, 9, 6]
Dalam contoh ini, filtered_list ialah senarai yang mengandungi semua elemen daripada my_list yang lebih besar daripada 3.
Sekarang, mari buat pemahaman penjana setara:
>>> filtered_gen = (item for item in my_list if item > 3) # Generator comprehension >>> print(filtered_gen) # Notice the generator object <generator object <genexpr> at 0x7f2ad75f89e0>
Seperti yang anda lihat, filtered_gen bukanlah senarai tetapi objek penjana. Ia menyediakan mekanisme malas untuk mengulangi jujukan. Apabila memanggil next(filtered_gen), anda mendapatkan semula item seterusnya, iaitu 5 dalam kes ini. Panggilan seterusnya menghasilkan 9 dan 6.
Pengoptimuman Memori
Kelebihan utama pemahaman penjana terletak pada keupayaannya untuk mengekalkan ingatan. Dengan menjana item atas permintaan, mereka mengelak daripada menggunakan memori untuk semua item sekaligus, yang boleh menjadi penting untuk jujukan yang besar.
Kes Penggunaan
Kefahaman penjana sesuai untuk senario di mana anda perlu:
Kesimpulan
Kefahaman penjana memperluaskan kegunaan pemahaman senarai dengan menyediakan mekanisme cekap ingatan untuk menjana urutan atas permintaan. Mereka menawarkan fleksibiliti, faedah prestasi dan keupayaan untuk bekerja dengan jujukan yang berpotensi besar dengan cekap.
Atas ialah kandungan terperinci Bagaimanakah Pemahaman Penjana Berbeza daripada Pemahaman Senarai dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!