Rumah >pembangunan bahagian belakang >Tutorial Python >Penjelasan terperinci tentang penjana dalam Python

Penjelasan terperinci tentang penjana dalam Python

王林
王林asal
2023-06-10 15:25:515535semak imbas

Python ialah bahasa pengaturcaraan yang berkuasa dan fleksibel yang digunakan secara meluas dalam pelbagai bidang. Antaranya, penjana adalah elemen utama dalam Python Ia mempunyai banyak kelebihan dan boleh meningkatkan kecekapan berjalan kod dengan berkesan. Artikel ini akan memberi anda pengenalan terperinci kepada penjana dalam Python.

1. Apakah penjana?

Penjana ialah jenis fungsi khas yang membolehkan anda mengulangi jujukan tanpa perlu membina jujukan lengkap terlebih dahulu. Ini bermakna penjana hanya akan menjana setiap elemen apabila ia diminta. Proses ini juga dikenali sebagai "protokol iterator".

Menggunakan penjana boleh menjimatkan penggunaan memori dan sumber pengkomputeran, yang sangat berguna untuk memproses data berskala besar dan tugas pengkomputeran yang kompleks.

Anda boleh mencipta penjana dalam dua cara:

1 Tukar definisi fungsi kepada fungsi penjana dan gunakan kata kunci hasil dan bukannya kata kunci pulangan.

2. Gunakan ungkapan penjana, serupa dengan pemahaman senarai.

Berikut ialah contoh fungsi penjana:

def fibonacci(limit):
    # 初始值
    a, b = 0, 1
    while a < limit:
        yield a
        a, b = b, a + b

Dalam contoh ini, kami mentakrifkan fungsi penjana yang dipanggil fibonacci. Ia menggunakan gelung sementara untuk menjana jujukan Fibonacci dan menggunakan kata kunci hasil untuk mengembalikan penjana dalam setiap gelung.

Apabila fungsi ini dipanggil, ia tidak akan dilaksanakan serta-merta, tetapi akan mengembalikan objek penjana. Semasa anda mengulangi objek penjana ini, ia menjana nombor Fibonacci seterusnya pada setiap lelaran.

Contohnya:

fib = fibonacci(10)
for i in fib:
    print(i)

Hasil keluaran kod ini ialah 0, 1, 1, 2, 3, 5, 8.

2. Ungkapan penjana

Ekspresi penjana ialah cara yang lebih mudah untuk mencipta penjana. Ia serupa dengan pemahaman senarai, tetapi mengembalikan objek penjana. Sintaks ungkapan penjana ialah:

(表达式 for 变量 in 序列 if 条件)

di mana ungkapan ialah nilai yang akan dikembalikan oleh penjana, pembolehubah ialah pembolehubah gelung, urutan ialah urutan yang akan dilalui oleh pembolehubah dan keadaan adalah pilihan.

Contohnya:

gen = (i ** 2 for i in range(10) if i % 2 != 0)

Ungkapan penjana ini mengembalikan kuasa dua semua nombor ganjil daripada 0 hingga 9. Dengan memanggil kaedah seterusnya(), kita boleh mendapatkan nilai ini satu demi satu:

print(next(gen))  # 输出1
print(next(gen))  # 输出9
print(next(gen))  # 输出25

3. Kelebihan penjana

1. Penggunaan memori yang kecil

Penjana ialah malas Mekanisme pengiraan yang menghasilkan hasil pengiraan hanya apabila diperlukan. Oleh itu, banyak ruang memori disimpan.

2. Kecekapan operasi yang tinggi

Penjana mengelakkan overhed pengiraan dan penyimpanan yang besar yang diperlukan untuk mengira semua hasil. Ini menjadikan penjana sangat berguna untuk memproses set data yang besar dan tugas berkala.

3. Mudah dilaksanakan

Python menyediakan mekanisme penjana yang mudah dan fleksibel, menjadikannya sangat mudah untuk menulis penjana.

4. Boleh berubah

Penjana boleh diubah suai, seperti menambahkan elemen padanya atau mengalih keluar elemen daripadanya.

5. Ringkasan

Penjana ialah jenis data yang sangat berguna dalam Python, yang boleh meningkatkan kecekapan kod. Ia menjana hasil pengiraan hanya apabila diperlukan dan boleh diubah suai. Artikel ini memperkenalkan anda kepada penjana dalam Python, termasuk fungsi penjana dan ungkapan penjana. Dengan memahami faedah penjana dan cara ia berfungsi, anda boleh menggunakan teknik pengaturcaraan yang cekap ini dengan lebih baik.

Atas ialah kandungan terperinci Penjelasan terperinci tentang penjana dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn