range(stop)
range(start, stop[, step])
La función range representa una secuencia inmutable de números enteros. Si se utiliza pasándole un único argumento stop, genera una secuencia de números enteros consecutivos entre 0 y stop-1. Si se utiliza pasándole dos argumentos, start y stop, genera una secuencia de números enteros consecutivos entre start y stop-1. En este último caso, la inclusión de un tercer argumento step fuerza a que la secuencia de números se genere con un salto de "step" entre un número y el siguiente.
El argumento step no puede ser cero.
Si step es positivo, start deberá ser un número menor que stop. En cualquier otro caso la secuencia generada estará vacía.
Si step es negativo, start deberá ser un número mayor que stop. También en este caso de no ser así se generará una secuencia vacía.
Una de las ventajas de range con respecto a otras estructuras semejantes (como una lista o una tupla) es que range va a ocupar siempre una cantidad mínima de memoria (la necesaria para almacenar los argumentos start, stop y step), calculándose los números generados o los subrangos cuando resulte necesario.
- start: Primer número a generar en la secuencia.
- stop: Valor límite de la secuencia a generar.
- step: (Opcional) valor a añadir a cada número para generar el siguiente.
start, stop y step deberán ser números enteros.
La función range genera un objeto de tipo range que representa una secuencia de números enteros.
Podemos generar un rango de números con la función range y utilizarlo en un bucle for:
for i in range(4):
print(i)
0
1
2
3
En este caso solo hemos pasado un argumento a la función (el número 4), por lo que la secuencia generada está formada por los números enteros entre el 0 y el 3, ambos incluidos.
Si pasamos a la función dos argumentos, por ejemplo el 3 y el 7, estaríamos generando una secuencia de 4 números, entre el 3 y el 6 ambos incluidos:
for i in range(3, 7):
print(i)
3
4
5
6
Un tercer argumento representa el salto entre los números a generar. En este ejemplo generamos el rango y lo convertimos en lista con la función list:
list(range(5, 30, 6))
[5, 11, 17, 23, 29]
En este caso el primer valor es el 5 y los siguientes se calculan añadiendo al anterior el incremento (6).
Es posible extraer una selección de la secuencia generada como si de una lista o tupla se tratase:
r = range(10, 20)
r
range(10, 20)
r[3:6]
range(13, 16)
Si el parámetro step toma un valor negativo, los números se generan restando dicho valor al número anterior:
list(range(10, 5, -1))
[10, 9, 8, 7, 6]