¿Cómo crearía una lista con valores entre dos valores que puse? Por ejemplo, la siguiente lista se genera para valores del 11 al 16:
list = [11, 12, 13, 14, 15, 16]
Uso range
. En Python 2.x, devuelve una lista, por lo que todo lo que necesita es:
>>> range(11, 17)
[11, 12, 13, 14, 15, 16]
En Python 3.x range
es un iterador. Por lo tanto, debe convertirlo en una lista:
>>> list(range(11, 17))
[11, 12, 13, 14, 15, 16]
Nota : El segundo número es exclusivo. Entonces, aquí tiene que ser 16+1
=17
EDITAR:
Para responder a la pregunta sobre el incremento 0.5
, la opción más fácil probablemente sería usar numpy's arange()
y .tolist()
:
>>> import numpy as np
>>> np.arange(11, 17, 0.5).tolist()
[11.0, 11.5, 12.0, 12.5, 13.0, 13.5,
14.0, 14.5, 15.0, 15.5, 16.0, 16.5]
step
parámetro, pero sigue siendo un int - no flotante. No puedes hacer eso exactamente en la lib estándar.Pareces estar buscando
range()
:Para incrementar en
0.5
lugar de1
decir:fuente
list
como variable.list
es una clase integrada, por lo que se desaconseja su uso como variableTratar:
Esa es una lista en Python 2.xy se comporta principalmente como una lista en Python 3.x. Si está ejecutando Python 3 y necesita una lista que pueda modificar, use:
fuente
Si está buscando una función de rango que funcione para el tipo flotante, aquí hay un muy buen artículo .
Salida:
fuente
Usar la comprensión de la lista en python. Como también quieres 16 en la lista ... Usa x2 + 1. La función de rango excluye el límite superior de la función.
fuente
range()
no necesita usar una lista de comprensiónlist(range(x1, x2+1))
.suponiendo que desea tener un rango entre xay
use la lista para soporte 3.x
fuente
En Python puedes hacer esto muy fácilmente
o puede crear una función recursiva que devuelva una matriz hasta un número dado:
salida: ar = [10,9,8,7,6,5,4,3,2,1,0]
fuente
La forma más elegante de hacer esto es mediante el uso de la
range
función; sin embargo, si desea volver a crear esta lógica, puede hacer algo como esto:Esto produce la salida:
Según lo expresado anteriormente por @Jared, la mejor manera es usar
range
o,numpy.arrange
sin embargo, el código me parece interesante para compartir.fuente
[x for x in range(10, 3, 1)]
: el primer argumento es el comienzo, el segundo el final y el último el paso. ==> stop> startCada respuesta anterior supone que el rango es solo de números positivos. Aquí está la solución para devolver la lista de números consecutivos donde los argumentos pueden ser cualquiera (positivo o negativo), con la posibilidad de establecer un valor de paso opcional (predeterminado = 1).
Por ejemplo, el comando estándar
list(range(1,-3))
devuelve una lista vacía[]
, mientras que esta función devolverá[-3,-2,-1,0,1]
Actualizado : ahora el paso puede ser negativo. Gracias @Michael por su comentario.
fuente
i_min = -3, i_max = 1
any_number_range(i_max, i_min))
retornos[-3,-2,-1,0,1]
Pero, ellist(range(i_min, i_max + 1))
retorno devolverá los mismos valores.list(range(1,-3, -1))