sumatoria - Números pares en Python
sumatoria de numeros pares python (8)
No sé si esto es lo que quieres escuchar, pero es bastante trivial filtrar los valores impares con la comprensión de la lista.
evens = [x for x in range(100) if x%2 == 0]
o
evens = [x for x in range(100) if x&1 == 0]
También puede usar el parámetro de tamaño de paso opcional para que el range
cuente hasta 2.
Alguien sabe si Python tiene una función incorporada para trabajar e imprimir valores pares. Como el rango () por ejemplo.
Gracias
Solo usa un paso de 2:
range(start, end, step)
También hay algunas maneras de escribir iteradores infinitos perezosos e infinitos de números pares.
Usaremos el módulo itertools
y more_itertools
1 para hacer iteradores que emulen range()
.
import itertools as it
import more_itertools as mit
# Infinite iterators
a = it.count(0, 2)
b = mit.tabulate(lambda x: 2 * x, 0)
c = mit.iterate(lambda x: x + 2, 0)
Todas las últimas opciones pueden generar una secuencia infinita de números pares, 0, 2, 4, 6, ...
Puede tratar estos como cualquier generador haciendo un bucle sobre ellos, o puede seleccionar n
números de la secuencia a través de itertools.islice
o take
de las recetas de itertools, por ejemplo:
mit.take(10, a)
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
Esto es equivalente a la list(range(0, 20, 2))
. Sin embargo, a diferencia de range()
, el iterador está en pausa y producirá el siguiente lote de números pares si se ejecuta de nuevo:
mit.take(10, a)
# [20, 22, 24, 26, 28, 30, 32, 34, 36, 38]
Detalles
Las opciones presentadas son todos los iteradores infinitos que start
con un entero, es decir, 0
.
- a.
itertools.count
produce el siguiente valor incrementado por unstep=2
(ver código equivalente ). - segundo.
more_itertools.tabulate
es una receta de itertools que asigna una función a cada valor de una recta numérica (consulte el código fuente ). - do. 1 produce el valor inicial (
0
). A continuación, aplica una función al último elemento (incrementando en 2), produce ese resultado y repite este proceso (consulte el código fuente ).
1 Un paquete de terceros que implementa muchas herramientas útiles, incluidas las recetas de itertools , como take
y tabulate
.
Tratar:
range( 0, 10, 2 )
El rango tiene tres parámetros.
Puede escribir range(0, 10, 2)
.
#This is not suggestible way to code in Python, but it gives a better understanding
numbers = range(1,10)
even = []
for i in numbers:
if i%2 == 0:
even.append(i)
print (even)
a = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
b = [i for i in a if i % 2 == 0]
print("Original List -->", a,"/n")
print("and the Even Numbers-->", b)
>>> if 100 % 2 == 0 : print "even"
...
even