Python

Python Generator

Python Generator
Dalam topik ini, kita akan belajar Python Generator.

Definisi: Generator seperti fungsi normal yang menghasilkan rentang nilai menggunakan menghasilkan kata kunci. Ini mengembalikan satu objek pada satu waktu. Secara internal menggunakan iterator. Untuk mengakses elemen berikutnya lanjut() fungsi digunakan, atau kita dapat menggunakannya untuk sebuah lingkaran. Jika kami mencoba mengakses nilai di luar rentang, itu menimbulkan Berhenti Iterasi kesalahan.

Kami akan melihat beberapa contoh untuk memahami lebih baik

Ex: fungsi generator untuk rentang nilai

def range_fun(n):
x = 0
sedangkan x < n:
hasil x
x + = 1
y = range_fun (3)
#panggil menggunakan for loop
print('Hasilkan nilai menggunakan metode next()')
untuk saya di range_fun(3):
cetak (i)
#panggil generator menggunakan metode selanjutnya
print('Hasilkan nilai menggunakan metode for loop')
cetak(berikutnya(y))
cetak(berikutnya(y))
cetak(berikutnya(y))
print(next(y))#Stop Iterasi pengecualian akan dimunculkan

Ex: Fungsi generator untuk deret Fibonacci

def fib_fun(n):
x, y = 0, 1
sedangkan x < n:
hasil x
x, y = y, x + y
z = fib_fun(6) #objek generator
print('Hasilkan nilai menggunakan metode next()')
cetak(berikutnya(z))
cetak(berikutnya(z))
cetak(berikutnya(z))
cetak(berikutnya(z))
cetak(berikutnya(z))
cetak(berikutnya(z))
print('Hasilkan nilai menggunakan metode for loop')
untuk saya di fib_fun (6):
cetak (i)

Ex: Fungsi generator untuk membuat rentang nilai yang diberikan nilai awal dan akhir.

def my_range(mulai, akhir):
saat ini = mulai
saat ini < end:
menghasilkan arus
saat ini +=1
print('Hasilkan nilai menggunakan metode next()')
angka = rentang_saya(1,5)
cetak(berikutnya(angka))
cetak(berikutnya(angka))
cetak(berikutnya(angka))
cetak(berikutnya(angka))
print('Hasilkan nilai menggunakan metode for loop')
untuk num di my_range(1,5):
cetak (angka)

Ex: Generator untuk mengalikan setiap angka (kurang dari angka) dengan angka a

def gen_mulby_num(maks,num):
n = 0
sementara n < max:
hasil n * angka
n + = 1
untuk saya di gen_mulby_num(5,3):
cetak (i)

Ex: Generator untuk menemukan kubus untuk rentang nilai

def gen_mulby_num(maks,num):
n = 0
sementara n < max:
hasil n * angka
n + = 1
untuk saya di gen_mulby_num(5,3):
cetak (i)

Ex: beberapa generator: temukan kuadrat bilangan genap yang dihasilkan dari suatu bilangan

Generator 1: menghasilkan nilai genap dari angka yang diberikan

Generator 2: menghasilkan angka kuadrat dari nilai generator1

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:
hasilkan 2 * angka
untuk n di gen_square(gen_even(15)):
cetak (n)


Ex: Beberapa generator: buat seri fibnacci dan tambahkan nilai 10 setiap angka.

Generator1: menghasilkan deret fibonacci dari angka tertentu

Generator2: tambahkan setiap angka dengan 10 dari generator1

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


Pemahaman generator:

Pemahaman generator mirip dengan pemahaman daftar di mana daftar menggunakan tanda kurung siku; ini menggunakan tanda kurung biasa.

Ex:

nums = (i untuk i dalam rentang (10))
cetak(tipe(angka))
cetak(daftar(angka))

Perbedaan antara Generator dan fungsi normal:

  1. Sebuah generator memberikan nilai menggunakan menghasilkan kata kunci di mana fungsi normal menggunakan kembali kata kunci
  2. Generator mulai dari tempat berhentinya saat dipanggil lain kali. Fungsi normal mengeksekusi semua pernyataan setiap saat.
  3. Generator menghemat memori karena mengembalikan satu nilai pada satu waktu. Jadi kita bisa menggunakannya untuk menghasilkan nilai tak terbatas.

Kesimpulan:

Generator sangat membantu saat kita menangani data yang besar/besar. Pada waktu tertentu, ia hanya menyimpan satu bagian data daripada seluruh data. Konsep generator dianggap sebagai konsep lanjutan dalam python.

10 Game Teratas untuk Dimainkan di Ubuntu
Platform Windows telah menjadi salah satu platform yang mendominasi untuk bermain game karena persentase besar dari game yang berkembang saat ini untu...
5 Game Arkade Terbaik untuk Linux
Saat ini, komputer adalah mesin serius yang digunakan untuk bermain game. Jika Anda tidak bisa mendapatkan skor tinggi baru, Anda akan tahu apa yang s...
Pertempuran Untuk Wesnoth 1.13.6 Pengembangan Dirilis
Pertempuran Untuk Westnoth 1.13.6 dirilis bulan lalu, adalah rilis pengembangan keenam dalam 1.13.x series dan memberikan sejumlah peningkatan, teruta...