Python

Penjana Python

Penjana Python
Dalam topik ini, kita akan mempelajari Python Generator.

Definisi: Penjana adalah seperti fungsi biasa yang menghasilkan pelbagai nilai menggunakan hasil kata kunci. Ia mengembalikan satu objek pada satu masa. Secara dalaman menggunakan iterator. Untuk mengakses elemen seterusnya seterusnya () fungsi digunakan, atau kita boleh menggunakannya untuk gelung. Sekiranya kita cuba mengakses nilai di luar julat, itu akan menaikkan nilai a StopIterasi kesilapan.

Kami akan melihat beberapa contoh untuk memahami dengan lebih baik

Cth: fungsi penjana untuk julat nilai

def range_fun (n):
x = 0
semasa x < n:
hasil x
x + = 1
y = range_fun (3)
#call menggunakan untuk gelung
cetak ('Hasilkan nilai menggunakan kaedah seterusnya ()')
untuk i in range_fun (3):
mencetak (i)
#call generator menggunakan kaedah seterusnya
cetak ('Hasilkan nilai menggunakan kaedah gelung')
cetak (seterusnya (y))
cetak (seterusnya (y))
cetak (seterusnya (y))
print (next (y)) # Pengecualian Stop Iteration akan dinaikkan

Cth: Fungsi penjana untuk siri Fibonacci

def fib_fun (n):
x, y = 0, 1
semasa x < n:
hasil x
x, y = y, x + y
z = fib_fun (6) #generator objek
cetak ('Hasilkan nilai menggunakan kaedah seterusnya ()')
cetak (seterusnya (z))
cetak (seterusnya (z))
cetak (seterusnya (z))
cetak (seterusnya (z))
cetak (seterusnya (z))
cetak (seterusnya (z))
cetak ('Hasilkan nilai menggunakan kaedah gelung')
untuk i in fib_fun (6):
mencetak (i)

Cth: Fungsi penjana untuk mencipta julat nilai yang diberi nilai awal dan akhir.

def my_range (permulaan, akhir):
semasa = permulaan
semasa semasa < end:
hasil semasa
semasa + = 1
cetak ('Hasilkan nilai menggunakan kaedah seterusnya ()')
angka = julat_ku (1,5)
cetak (seterusnya (angka))
cetak (seterusnya (angka))
cetak (seterusnya (angka))
cetak (seterusnya (angka))
cetak ('Hasilkan nilai menggunakan kaedah gelung')
untuk nombor dalam julat_ku (1,5):
cetak (angka)

Cth: Penjana untuk mengalikan setiap nombor (kurang daripada satu nombor) dengan nombor

def gen_mulby_num (maks, bilangan):
n = 0
sementara n < max:
hasil n * num
n + = 1
untuk i dalam gen_mulby_num (5,3):
mencetak (i)

Cth: Penjana untuk mencari kubus untuk pelbagai nilai

def gen_mulby_num (maks, num):
n = 0
sementara n < max:
hasil n * num
n + = 1
untuk i dalam gen_mulby_num (5,3):
mencetak (i)

Cth: penjana berganda: cari kuasa dua nombor genap yang dihasilkan daripada nombor

Penjana 1: menjana nilai genap dari nombor tertentu

Penjana 2: menghasilkan nombor kuasa dua dari nilai penjana1

def gen_even (m):
n = 0
sementara n < m:
jika n% 2 == 0:
hasil n
n + = 2
def gen_square (angka):
untuk angka dalam angka:
hasil 2 * bilangan
untuk n dalam gen_square (gen_even (15)):
cetak (n)


Cth: Penjana pelbagai: buat siri fibnacci dan tambah nilai 10 setiap nombor.

Generator1: menghasilkan siri fibonacci dari nombor tertentu

Penjana2: tambah setiap nombor dengan 10 dari penjana1

def gen_fib (n):
x, y = 0, 1
semasa x < n:
hasil x
x, y = y, x + y
def gen_add_10 (angka):
untuk angka dalam angka:
hasil 10 + angka
untuk n dalam gen_add_10 (gen_fib (5)):
cetak (n)


Fahaman penjana:

Pemahaman penjana serupa dengan pemahaman senarai di mana senarai menggunakan tanda kurung persegi; ini menggunakan kurungan normal.

Cth:

angka = (i untuk i dalam jarak (10))
mencetak (jenis (angka))
cetak (senarai (angka))

Perbezaan antara Generator dan fungsi normal:

  1. Penjana memberikan nilai menggunakan hasil kata kunci di mana fungsi biasa menggunakan kembali kata kunci
  2. Penjana bermula dari tempat ia berhenti apabila dipanggil pada waktu berikutnya. Fungsi normal melaksanakan semua pernyataan setiap masa.
  3. Penjana menyimpan memori kerana mengembalikan satu nilai pada satu masa. Oleh itu, kita dapat menggunakannya untuk menghasilkan nilai yang tidak terhingga.

Kesimpulan:

Generator sangat membantu ketika kita mengendalikan data besar / besar. Pada masa tertentu, ia hanya menyimpan satu bahagian data dan bukan keseluruhan data. Konsep penjana dianggap sebagai konsep maju dalam python.

Cara memuat turun dan Mainkan Sid Meier's Civilization VI di Linux
Pengenalan permainan Civilization 6 adalah konsep moden mengenai konsep klasik yang diperkenalkan dalam siri permainan Age of Empires. Idea itu cukup ...
Cara Memasang dan Memainkan Doom di Linux
Pengenalan Doom Seri Doom berasal dari tahun 90an selepas pembebasan Doom yang asal. Ini adalah hit seketika dan sejak saat itu dan seterusnya siri pe...
Vulkan untuk Pengguna Linux
Dengan setiap kad grafik generasi baru, kami melihat pembangun permainan mendorong had kesetiaan grafik dan semakin dekat dengan fotorealisme. Tetapi ...