Python

Python-generaattori

Python-generaattori
Tässä aiheessa opitaan Python Generator.

Määritelmä: Generaattori on kuin normaali toiminto, joka tuottaa arvon alueiden avulla saanto avainsana. Se palauttaa yhden objektin kerrallaan. Se käyttää sisäisesti iteraattoria. Seuraavan elementin käyttäminen Seuraava() toimintoa käytetään tai voimme käyttää sitä varten silmukka. Jos yritämme käyttää arvoa alueen ulkopuolella, se nostaa a StopIteration virhe.

Näemme esimerkin ymmärtämään paremmin

Esim .: generaattoritoiminto arvojen alueelle

def range_fun (n):
x = 0
kun x < n:
saanto x
x + = 1
y = range_fun (3)
# kutsu käyttää silmukalle
tulosta ('Luo arvot käyttämällä seuraavaa () -menetelmää')
i: lle alueella_fun (3):
tulosta (i)
#puhelun generaattori seuraavalla menetelmällä
tulosta ('Luo arvot käyttämällä silmukan menetelmää')
tulosta (seuraava (y))
tulosta (seuraava (y))
tulosta (seuraava (y))
tulosta (seuraava (y)) # Stop Iteration -poikkeus nousee

Esim: Generaattoritoiminto Fibonacci-sarjalle

def fib_fun (n):
x, y = 0, 1
kun x < n:
saanto x
x, y = y, x + y
z = fib_fun (6) #generator-objekti
tulosta ('Luo arvoja käyttämällä next () -menetelmää')
tulosta (seuraava (z))
tulosta (seuraava (z))
tulosta (seuraava (z))
tulosta (seuraava (z))
tulosta (seuraava (z))
tulosta (seuraava (z))
tulosta ('Luo arvot käyttämällä silmukan menetelmää')
i: lle fib_funissa (6):
tulosta (i)

Esim: Generaattoritoiminto arvojen alueen luomiseksi annettujen alku- ja loppuarvojen perusteella.

def my_range (alku, loppu):
virta = alku
kun taas nykyinen < end:
tuottovirta
virta + = 1
tulosta ('Luo arvot käyttämällä seuraavaa () -menetelmää')
nums = oma_alue (1,5)
tulosta (seuraava (summat))
tulosta (seuraava (summat))
tulosta (seuraava (summat))
tulosta (seuraava (summat))
tulosta ('Luo arvot käyttämällä silmukka-menetelmää')
numerolle omalla alueellani (1,5):
tulosta (numero)

Esim: Generaattori kertomaan jokainen numero (vähemmän kuin numero) luvulla

def gen_mulby_num (enimmäismäärä, lukumäärä):
n = 0
kun taas n < max:
saanto n * numero
n + = 1
i: lle ryhmässä gen_mulby_num (5,3):
tulosta (i)

Esim: Generaattori kuution löytämiseksi arvojen alueelle

def gen_mulby_num (enimmäismäärä, lukumäärä):
n = 0
kun taas n < max:
saanto n * numero
n + = 1
i: lle ryhmässä gen_mulby_num (5,3):
tulosta (i)

Esim: useita generaattoreita: etsi luvusta muodostettujen parillisten numeroiden neliö

Generaattori 1: Luo parilliset arvot tietystä luvusta

Generaattori 2: luo neliönumerot generaattorin1 arvoista

def gen_even (m):
n = 0
kun taas n < m:
jos n% 2 == 0:
saanto n
n + = 2
def gen_square (luvut):
numerolle numeroina:
saanto 2 * num
n: lle gen_neliössä (gen_even (15)):
tulosta (n)


Esim: Useita generaattoreita: luo fibnacci-sarjoja ja lisää arvoa 10 jokaiselle numerolle.

Generaattori1: tuottaa fibonacci-sarjan tietystä numerosta

Generaattori2: lisää kukin numero 10 generaattorista1

def gen_fib (n):
x, y = 0, 1
kun x < n:
saanto x
x, y = y, x + y
def gen_add_10 (summat):
numerolle numeroina:
saanto 10 + num
n: lle gen_add_10: ssä (gen_fib (5)):
tulosta (n)


Generaattorin käsitykset:

Generaattorin ymmärtäminen on samanlainen kuin luettelon ymmärtäminen, jossa luettelossa käytetään hakasulkeita; tämä käyttää normaalia sulkeita.

Esim:

nums = (i i: lle alueella (10))
tulosta (tyyppi (summat))
tulosta (luettelo (numerot))

Generaattorin ja normaalin toiminnan ero:

  1. Generaattori antaa arvot käyttämällä saanto avainsana, jossa normaali toiminto käyttää palata avainsana
  2. Generaattori alkaa siitä, mihin se pysähtyi, kun sitä kutsutaan seuraavan kerran. Normaali toiminto suorittaa kaikki lauseet joka kerta.
  3. Generaattori säästää muistia, koska se palauttaa yhden arvon kerrallaan. Joten voimme käyttää sitä loputtomien arvojen tuottamiseen.

Päätelmä:

Generaattori on erittäin hyödyllinen, kun käsittelemme valtavia / suuria tietoja. Tiettynä ajankohtana siinä on vain yksi yksittäinen tieto kokonaisen datan sijaan. Generaattorikonseptia pidetään edistyneenä konseptina pythonissa.

Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...
Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...
AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...