range python – El tipo range en Python: Secuencias numéricas

range python - El tipo range en Python
Share on facebook
Share on twitter
Share on linkedin

range en Python es un tipo que se utiliza para representar una secuencia inmutable de números. Uno de sus principales usos es junto a la sentencia for, para definir un bucle sobre el que se itera un número determinado de veces.

Descubre en este tutorial la clase range y sus principales usos y operaciones.

Índice

La clase range en Python

Como te adelantaba en la introducción, range es un tipo de dato que representa una secuencia de números inmutable.

Para crear un objeto de tipo range, se pueden usar dos constructores :

  • range(fin): Crea una secuencia numérica que va desde 0 hasta fin - 1.
  • range(inicio, fin, [paso]): Crea una secuencia numérica que va desde inicio hasta fin - 1. Si además se indica el parámetro paso, la secuencia genera los números de paso en paso.

Veámoslo con un ejemplo:

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(5, 10))
[5, 6, 7, 8, 9]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(5, -5, -2))
[5, 3, 1, -1, -3]

¿Por qué estoy utilizando en los ejemplos la clase range como argumento de list? range, además de un tipo secuencial es un tipo iterable con una particularidad: a diferencia de los tipos list o tuple, range calcula los ítems al vuelo, cuando los necesita. Como list acepta un objeto iterable como parámetro, por eso paso un objeto range al constructor de list, para que se muestre por pantalla la secuencia completa que se genera con range.

❗️NOTA: Si se llama al constructor range() con parámetros incorrectos, se obtendrá un objeto vacío.

# Nunca se puede ir de 0 a 10 de -1 en -1

>>> list(range(0, 10, -1))
[]

Recorrer una secuencia numérica

En la introducción te adelanté que uno de los principales usos de range() es utilizarlo en bucles for. Aquí puedes ver todos los detalles del uso de for y range en Python.

>>> for i in range(1, 11):
...     print(i)
...     
1
2
3
4
5
6
7
8
9
10

Ventajas de usar range en Python

La principal ventaja de usar range sobre list o tuple es que es un iterable que genera los elementos solo en el momento en que realmente los necesita. Esto implica que usa una cantidad de memoria mínima, por muy grande que sea el rango de números que represente.

Veamos una comparación de una lista que almacena los números del 0 al 100.000 y un rango del 0 al 100.000:

>>> import sys
>>> lista = list(range(0, 100000))
>>> rango = range(0, 100000)
>>> sys.getsizeof(lista)
900120
>>> sys.getsizeof(rango)
48

Como puedes apreciar, la lista ocupa casi 1 MB en memoria frente a los 48 bytes que ocupa el rango.

Operaciones de la clase range

Al tratarse de un tipo secuencial, range implementa las operaciones básicas de ese tipo a excepción de la concatenación y la repetición:

>>> r = range(0,30, 3)
>>> r[2]
6
>>> r[-1]
27
>>> 13 in r
False
>>> 12 in r
True
>>> r.index(18)
6

Bueno, pues con esto, hemos llegado al final de este tutorial. Recuerda, usa la clase range para generar secuencias de números, especialmente si las necesitas en un bucle for.

Si te ha resultado útil, compártelo con tus amigos 🤗

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

Sé un Pythonista: Recibe trucos Python y accede a nuestro espacio de Slack

También te puede interesar

* Te informo de que los datos de carácter personal que proporciones al comentar serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es moderar los comentarios. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en Disqus (disqus.com), mi sistema de comentarios, que está acogido al acuerdo de seguridad EU-US Privacy. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLÍTICA DE PRIVACIDAD.

Sobre j2logo

Quiero ayudarte a que seas mejor programador/a, pero no uno cualquiera, sino uno de los top.

Últimos posts

¿Quieres ser un auténtico Pythonista? 🐍

📩 Recibe de vez en cuando trucos, scripts y tutoriales Python en español para dominar el lenguaje. No es SPAM. Date de baja cuando quieras

🥇 Accede a nuestra comunidad privada de Slack: Pythonistas-es

* Al enviar el formulario confirmas que aceptas la POLITICA DE PRIVACIDAD

Pythonistas-es

SÉ UN AUTÉNTICO PYTHONISTA

📩 Recibe trucos, scripts y tutoriales Python

🥇 Accede a nuestra comunidad privada de Slack