Pitón

Generador de Python

Generador de Python
En este tema, aprenderemos Python Generator.

Definición: Un generador es como una función normal que genera un rango de valores usando el producir palabra clave. Devuelve un objeto a la vez. Utiliza internamente un iterador. Para acceder al siguiente elemento Siguiente() se usa la función, o podemos usarla por un bucle. Si intentamos acceder al valor fuera del rango, genera un StopIteration error.

Veremos algún ejemplo para entender mejor

Ex: función de generador para rango de valores

def range_fun (n):
x = 0
mientras x < n:
rendimiento x
x + = 1
y = range_fun (3)
# llamar usando el bucle for
print ('Generar valores usando el método next ()')
para yo en range_fun (3):
imprimir (i)
#generador de llamadas usando el método siguiente
print ('Generar valores usando el método de bucle for')
imprimir (siguiente (y))
imprimir (siguiente (y))
imprimir (siguiente (y))
print (next (y)) # Se generará la excepción Stop Iteration

Ex: Función de generador para la serie Fibonacci

def fib_fun (n):
x, y = 0, 1
mientras x < n:
rendimiento x
x, y = y, x + y
z = fib_fun (6) #objeto generador
print ('Generar valores usando el método next ()')
imprimir (siguiente (z))
imprimir (siguiente (z))
imprimir (siguiente (z))
imprimir (siguiente (z))
imprimir (siguiente (z))
imprimir (siguiente (z))
print ('Generar valores usando el método de bucle for')
para yo en fib_fun (6):
imprimir (i)

Ex: Función de generador para crear un rango de valores dados los valores iniciales y finales.

def my_range (inicio, final):
actual = inicio
mientras actual < end:
corriente de rendimiento
corriente + = 1
print ('Generar valores usando el método next ()')
nums = my_range (1,5)
imprimir (siguiente (números))
imprimir (siguiente (números))
imprimir (siguiente (números))
imprimir (siguiente (números))
print ('Generar valores usando el método de bucle for')
para num en my_range (1,5):
imprimir (num)

Ex: Generador para multiplicar cada número (menos de un número) por un número

def gen_mulby_num (max, num):
n = 0
mientras que n < max:
rendimiento n * num
n + = 1
para yo en gen_mulby_num (5,3):
imprimir (i)

Ex: Generador para encontrar el cubo para el rango de valores

def gen_mulby_num (max, num):
n = 0
mientras que n < max:
rendimiento n * num
n + = 1
para yo en gen_mulby_num (5,3):
imprimir (i)

Ex: generadores múltiples: encuentra el cuadrado de números pares generados a partir de un número

Generador 1: genera valores pares a partir de un número dado

Generador 2: genera números cuadrados a partir de los valores del generador1

def gen_even (m):
n = 0
mientras que n < m:
si n% 2 == 0:
rendimiento n
n + = 2
def gen_square (números):
para num in nums:
rendimiento 2 * num
para n en gen_square (gen_even (15)):
imprimir (n)


Ex: Generadores múltiples: cree series de fibnacci y agregue valor 10 por cada número.

Generator1: genera series de fibonacci a partir de un número dado

Generador2: sume cada número por 10 del generador1

def gen_fib (n):
x, y = 0, 1
mientras x < n:
rendimiento x
x, y = y, x + y
def gen_add_10 (números):
para num in nums:
rendimiento 10 + num
para n en gen_add_10 (gen_fib (5)):
imprimir (n)


Comprensiones del generador:

Las comprensiones del generador son similares a las comprensiones de listas donde la lista usa corchetes; esto usa paréntesis normal.

Ex:

nums = (i para i en el rango (10))
imprimir (tipo (números))
imprimir (lista (números))

Diferencia entre generador y funcionamiento normal:

  1. Un generador proporciona valores usando producir palabra clave donde la función normal usa la regreso palabra clave
  2. El generador comienza desde donde se detuvo cuando se lo llamó la próxima vez. La función normal ejecuta todas las declaraciones cada vez.
  3. El generador ahorra memoria ya que devuelve un valor a la vez. Entonces podemos usarlo para generar valores infinitos.

Conclusión:

Generator es muy útil cuando manejamos datos grandes / grandes. En un momento dado, contiene solo una pieza de datos en lugar de datos completos. El concepto de generadores se considera un concepto avanzado en Python.

Batalla por Wesnoth 1.13.6 Desarrollo liberado
Batalla por Wesnoth 1.13.6 lanzado el mes pasado, es el sexto lanzamiento de desarrollo en el 1.13.x y ofrece una serie de mejoras, sobre todo en la i...
Cómo instalar League Of Legends en Ubuntu 14.04
Si eres fanático de League of Legends, esta es una oportunidad para que pruebes League of Legends. Tenga en cuenta que LOL es compatible con PlayOnLin...
Instale el último juego de estrategia de OpenRA en Ubuntu Linux
OpenRA es un motor de juego de estrategia en tiempo real libre / gratuito que recrea los primeros juegos de Westwood como el clásico Command & Conquer...