Python | range() no devuelve un iterador

range(): la función de rango de Python genera una lista de números que generalmente se usan en muchas situaciones para la iteración, como en for loop o en muchos otros casos. En el rango de python, los objetos no son iteradores. range es una clase de una lista de objetos inmutables. El comportamiento de iteración de rango es similar al comportamiento de iteración de lista en lista y rango, no podemos llamar directamente a la siguiente función. Podemos llamar a next si obtenemos un iterador usando iter.

# Python program to understand range
# this creates a list of 0 to 5
# integers
  
demo = range(6)
  
# print the demo
print(demo)
  
# it will generate error
print(next(demo))

PRODUCCIÓN :

 range(0, 6)

Errores de tiempo de ejecución:

 Traceback (most recent call last):
  File "/home/6881218331a293819d2a4c16029084f9.py", line 13, in 
    print(next(demo))
TypeError: list object is not an iterator

Nota: el error de tiempo de ejecución anterior indica claramente que el rango de python no es un iterador.

Debido a que el rango es iterable , podemos obtener un iterador con la ayuda de ellos, pero no podemos llamar directamente a next in next. El siguiente ejemplo lo explica claramente.

# Python program to understand range
  
# creates an iterator
demo = iter(range(6))
  
# print iterator
print(demo)
  
# use next
print(next(demo))

PRODUCCIÓN :

<listiterator object at 0x7f3f32a46450 >
0

range no genera todos los números que contiene cuando lo creamos. Da solo aquellos números que los obtenemos usando loop. El rango tiene las siguientes propiedades.

  • Los objetos de rango son inmutables, lo que significa que no se pueden volver a cambiar para que se puedan usar como índice en los diccionarios.
  • Tienen argumentos start stop y step.
  • El mismo rango se puede visitar una y otra vez.

Ejemplo

# Python program to understand range
  
# creates a demo range
demo = range(1, 31, 2)
  
# print the range
print(demo)
  
# print the start of range
print(demo.start)
  
# print step of range
print(demo.step)
  
# print the index of element 23
print(demo.index(23))
  
# since 30 is not present it will give error
print(demo.index(30))

PRODUCCIÓN :

range(1, 31, 2)
1
2
11

Error de tiempo de ejecución: dado que el elemento 30 no está presente, generará un error

 Traceback (most recent call last):
  File "/home/cddaae6552d1d9288d7c5ab503c54642.py", line 19, in 
    print(demo.index(30))
ValueError: 30 is not in range

Publicación traducida automáticamente

Artículo escrito por ankit15697 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *