
Juan Carlos García Esquivel
PreguntaEl profesor dice que una tupla es más eficiente que una lista, ¿cómo verifico eso?

Juan Carlos García Esquivel
@moisesmorin a vale jeje si no hay problema, igual gracias por contestarme 😁

Moisés Manuel Morín Hevia
@jcmexdev Holaaaaaa, totalemente deacuerdo. Un buen algoritmo se mide por su complejidad algorítmica y la mejor forma es la logaritmica (Big O notation). Pero te había entendido que querías contar el tiempo de ejecución xD Por eso te recomende que importaras el modulo "time". Saludos.

Juan Carlos García Esquivel
@moisesmorin ojo aqui moises tengo entendido que la eficienicia no se dbeberia medir en tiempo, seria mejor en cantidad de operaciones realizadas.

Moisés Manuel Morín Hevia
Hay un módulo que te dice el tiempo de ejecución. O en el mismo IDE de python te dice en cuantos segundos se ejecuta.

Carlos Eduardo Gomez García
@fayr96 Medir la eficiencia de un programa por el tiempo que este tarda en ejecutarse no es nada preciso (ni una buena técnica) porque los resultados en cuanto tiempo siempre pueden variar, el profesor David Aroesti habla sobre esto y sobre cómo medir eficientemente la eficiencia de un programa en este módulo del curso de Curso de POO y Algoritmos con Python :D

Carlos Eduardo Gomez García
@fayr96 Medir la eficiencia de un programa por el tiempo que este tarda en ejecutarse no es nada preciso (ni una buena técnica) porque los resultados en cuanto tiempo siempre pueden variar, el profesor David Aroesti habla sobre esto y sobre cómo medir eficientemente la eficiencia de un programa en este módulo del curso de Curso de POO y Algoritmos con Python :D

Fabio Antonio Yáñez Romero
Entendiendo la eficiencia como la rapidez con la que el ordenador procesa la información, se podría verificar la eficiencia mediante un bucle. Por ejemplo: haciendo un bucle en primer lugar (while o for) que sirva para añadir muchos valores a una lista que has creado (100.000, por ejemplo). Posteriormente hacer otro bucle (while o for) que acceda a los valores de la lista uno por uno y que te imprima algo después de haberlos revisado.
Si haces esto y lo comparas con otro programa igual que haga tuplas en lugar de listas deberías de notar la diferencia en la eficiencia.
Para elementos muy pequeños y programas sencillos estas cosas no se deberían notar, por eso la tupla y la lista deberían ser grandes.
Seguramente hayan bibliotecas con métodos que te permitan obtener el tiempo que ha tardado el programa en ejecutarse con lo que también tendrías un valor exacto de la eficiencia de cada programa en segundos.

Juan Carlos García Esquivel
@RetaxMaster, @jpablo15 muy interesante tienen toda la razón de momento no recordé que en python como en JS la capacidad de las listas es más grande que el tamaño de elementos que contiene, por tal razón una tupla tiene menor cantidad de memoria y ahí está la eficiencia, me queda muy clara la respuesta gracias 😁.
Juan Pablo Perez
Es porque las listas requieren que guardes mas memoria porque tienes que tener espacio así no lo vayas a usar es por ejemplo que te quieres ir de viaje con tu familia y puedes escoger un bus con 50 puestos o un carro con 5 puestos y tu familia es de 5 es mejor irse en el carro de 5. Espero te sirva mi respuesta saludos.

Carlos Eduardo Gomez García
¡Hola!, lo puedes inferir pro lógica, si una tupla es inmutable significa que asigna la cantidad de memoria necesaria para esta, en cambio, una lista necesita asignar más memoria, ya que puede ser mutada. También, al copiar una tupla realmente no se está copiando, sino que está usando la misma tupla ya creada por tanto el performance es mejor.
Claro, esto si solo usamos la lógica, pero si no te conformas con solo creerlo te recomiendo que le des un vistazo a estos artículos en donde hacen muy buenas comparaciones entre tuplas y listas 👀:
https://stackabuse.com/lists-vs-tuples-in-python/
En resumen, puedes ver el tamaño de una tupla y una lista en Python y ver que una tupla ocupa menos espacio:
>>> import sys >>> sys.getsizeof(tuple(iter(range(10)))) 128 >>> sys.getsizeof(list(iter(range(10)))) 200
En este caso usamos la librería
sys
getsizeof
Así puedes ver cómo la tupla ocupa menos espacio en memoria que una lista, puedes hacer la prueba en el REPL de Python si quieres :D