Python – invertido() VS [::-1] , ¿Cuál es más rápido?

Las listas de Python se pueden revertir utilizando muchos métodos de Python , como el método de corte o la función invertida() . Este artículo analiza cómo funcionan ambos y cuál de ellos parece ser el más rápido y por qué.

Código: Invertir una lista usando Slicing .

Python3

# Python code to reverse
# a list using slicing
  
ls = [110, 220, 330, 
      440, 550]
print('Original list :', ls)
  
# list reverse
ls = ls[::-1]
  
print('Reversed list elements :')
for element in ls:
  print(element)

Producción:

Original list : [110, 220, 330, 440, 550]
Reversed list elements :
550
440
330
220
110

Explicación: el formato [a: b: c] en el corte establece que de un inclusivo a un b exclusivo, cuente en incrementos de c. En el código anterior, a y b están en blanco y c es -1. Por lo tanto, itera la lista completa contando desde el último elemento hasta el primer elemento, lo que da como resultado una lista invertida.

Código: Invertir una lista Usando la función incorporada reversed() .

Python3

# Python code to reverse 
# a list using reversed()
  
ls = [110, 220, 330, 440, 550]
print('Original list :', ls)
  
# list reverse
ls = reversed(ls)
print('Iterator object :', ls)
  
print('Reversed list elements :')
for element in ls:
  print(element)

Producción: 

Original list : [110, 220, 330, 440, 550]
Iterator object : <list_reverseiterator object at 0x7fbd84e0b630>
Reversed list elements :
550
440
330
220
110

Explicación : la función invertida() integrada en Python devuelve un objeto iterador en lugar de una lista completa.

Conclusión : 

Para una lista comparativamente grande, bajo limitaciones de tiempo, parece que la función invertida() funciona más rápido que el método de corte. Esto se debe a que reversed() simplemente devuelve un iterador que itera la lista original en orden inverso, sin copiar nada, mientras que el corte crea una lista completamente nueva, copiando todos los elementos de la lista original. Para una lista con 10 6 valores, el método invertido() funciona casi 20 000 veces mejor que el método de corte. Si es necesario almacenar la copia inversa de los datos, se puede usar el corte, pero si solo se quiere iterar la lista de manera inversa, reversed() es definitivamente la mejor opción.

Publicación traducida automáticamente

Artículo escrito por vedangwartikar 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 *