Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> python

Dominando la función range() de Python: desde lo básico a casos avanzados

Dominando la función range() de Python: desde lo básico a casos avanzados

¿Qué es range() en Python?

La función range() de Python es un generador integrado que produce una secuencia de enteros basada en un inicio, fin y paso opcional. Si se omite el valor de inicio, por defecto es 0, y la secuencia se incrementa en 1 hasta alcanzar el valor de fin (exclusivo). Por ejemplo, range(5) produce 0, 1, 2, 3, 4. La función es indispensable al iterar con bucles for.

En este tutorial aprenderás:

Sintaxis

range(inicio, fin, paso)

Parámetros

Valor de retorno

Devuelve un objeto range, que se comporta como una secuencia inmutable de enteros. Al convertirlo a lista, muestra la secuencia completa.

Historia de range() en Python

Introducida en Python 3, range() reemplazó al antiguo xrange() usado en Python 2. Las diferencias clave se resumen a continuación:

range()xrange()
Devuelve una secuencia inmutable de números.Devuelve un objeto generador.
Consume memoria proporcional a la longitud de la secuencia.Usa memoria mínima; genera valores perezosamente.
Adecuado para rangos pequeños a medianos.Preferido para rangos grandes o secuencias infinitas.
Más lento en rangos muy grandes por asignación de memoria.Más rápido al iterar sobre rangos grandes.

Uso de range()

Ejemplo básico que imprime números del 0 al 9:

for i in range(10):
    print(i, end=" ")

Salida:

0 1 2 3 4 5 6 7 8 9

Usando inicio y fin en range()

Especificar un valor de inicio desplaza la secuencia:

for i in range(3, 10):
    print(i, end=" ")

Salida:

3 4 5 6 7 8 9

Usando inicio, fin y paso

Añadiendo un paso, controlas el intervalo entre números:

for i in range(3, 10, 2):
    print(i, end=" ")

Salida:

3 5 7 9

Incrementando valores con paso positivo

El paso por defecto es 1, pero puedes especificar cualquier entero positivo:

for i in range(1, 30, 5):
    print(i, end=" ")

Salida:

1 6 11 16 21 26

Rango inverso: decrementando con paso negativo

Proporcionar un paso negativo crea una secuencia descendente:

for i in range(15, 5, -1):
    print(i, end=" ")

Salida:

15 14 13 12 11 10 9 8 7 6

Usando números flotantes en range()

El range() integrado solo acepta enteros. Intentar pasar un float lanza un TypeError:

for i in range(10.5):
    print(i, end=" ")

Salida:

Traceback (most recent call last):
  File "python_range.py", line 1, in 
    for i in range(10.5):
TypeError: 'float' object cannot be interpreted as an integer

Usando bucle for con range()

Range se usa a menudo con len() para iterar sobre índices de lista:

lista = ['MySQL', 'MongoDB', 'PostgreSQL', 'Firebase']
for i in range(len(lista)):
    print(lista[i], end=" ")

Salida:

MySQL MongoDB PostgreSQL Firebase

Usando range() como lista

Convertir un range a lista es sencillo:

print(list(range(10)))

Salida:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Usando caracteres en range()

Aunque range() solo funciona con enteros, puedes generar secuencias alfabéticas convirtiendo caracteres a sus puntos de código Unicode:

def obtener_alfabeto(letra_inicio, letra_fin, paso):
    for c in range(ord(letra_inicio.lower()), ord(letra_fin.lower()), paso):
        yield chr(c)

print(list(obtener_alfabeto("a", "h", 1)))

Salida:

['a', 'b', 'c', 'd', 'e', 'f', 'g']

Cómo acceder a elementos de range

Puedes recuperar valores mediante iteración, indexación o conversión a lista:

Iteración

for i in range(6):
    print(i)

Salida:

0 1 2 3 4 5

Indexación

primer_valor = range(5)[0]
print("El primer elemento es =", primer_valor)
segundo_valor = range(5)[1]
print("El segundo elemento es =", segundo_valor)
ultimo_valor = range(5)[-1]
print("El último elemento es =", ultimo_valor)

Salida:

El primer elemento es = 0
El segundo elemento es = 1
El último elemento es = 4

Usando list()

print(list(range(10)))

Salida:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Ejemplo: Obtener números pares con range()

Para generar números pares hasta 18:

for i in range(2, 20, 2):
    print(i, end=" ")

Salida:

2 4 6 8 10 12 14 16 18

Fusionando dos salidas de range()

Combinar dos objetos range puede hacerse con itertools.chain:

from itertools import chain
print("Fusionando dos rangos en uno")
rango_fusionado = chain(range(10), range(10, 20, 1))
for i in rango_fusionado:
    print(i, end=" ")

Salida:

Fusionando dos rangos en uno
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Usando range() con NumPy

NumPy's arange() replica range() pero soporta pasos de punto flotante:

Sintaxis

arange(inicio, fin, paso)

Ejemplo

import numpy as np
for i in np.arange(10):
    print(i, end=" ")

Salida:

0 1 2 3 4 5 6 7 8 9

Rango de punto flotante con NumPy

for i in np.arange(0.5, 1.5, 0.2):
    print(i, end=" ")

Salida:

0.5 0.7 0.8999999999999999 1.0999999999999999 1.2999999999999998

Debido a que la aritmética de punto flotante es binaria, la salida a veces muestra expansiones decimales largas. Puedes redondear los valores según necesites.

Resumen

python

  1. Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
  2. Funciones lambda en Python: Guía práctica de funciones anónimas
  3. Generadores en Python: Iteración Eficiente y Casos de Uso Avanzados
  4. Explicación de Closures en Python: Cómo las Funciones Anidadas Capturan Variables
  5. Dominando las funciones lambda en Python: ejemplos prácticos y mejores prácticas
  6. Función abs() en Python: calcular valores absolutos para números y complejos
  7. Función round() en Python explicada con ejemplos prácticos
  8. Dominando la función range() de Python: desde lo básico a casos avanzados
  9. Dominando la función map() de Python: sintaxis, ejemplos y mejores prácticas
  10. Dominando enumerate() en Python: bucles con índices para listas, tuplas, cadenas y diccionarios
  11. Python list.count(): Guía Experta con Ejemplos Prácticos