Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Uso del Módulo Collections | Uso Eficiente de Estructuras de Datos
Técnicas de Optimización en Python

bookUso del Módulo Collections

Aunque los tipos de datos integrados y los arrays de NumPy cubren la mayoría de las tareas comunes, el módulo collections ofrece estructuras de datos especializadas diseñadas para casos de uso específicos. Entre ellas, deque (cola de doble extremo) destaca por sus importantes beneficios de rendimiento en ciertos escenarios.

A diferencia de las listas, que requieren desplazar elementos al insertar o eliminar desde el principio, un deque permite operaciones eficientes en ambos extremos. Por lo tanto, si necesitas agregar o eliminar elementos frecuentemente desde cualquiera de los extremos de una colección, un deque es una mejor opción.

Ahora, comparemos el rendimiento de list y deque en un escenario práctico:

123456789101112131415161718192021222324252627282930
import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator from collections import deque numbers_list = list(range(1, 10000001)) numbers_deque = deque(numbers_list) @timeit_decorator(number=1000) def list_append_left(): # Insert -1 at the beginning numbers_list.insert(0, -1) @timeit_decorator(number=1000) def deque_append_left(): numbers_deque.appendleft(-1) @timeit_decorator(number=1000) def list_pop_left(): # Remove the element at index 0 (first element) numbers_list.pop(0) @timeit_decorator(number=1000) def deque_pop_left(): numbers_deque.popleft() list_append_left() deque_append_left() list_pop_left() deque_pop_left()
copy

En este ejemplo, se ha creado una list y una deque, cada una conteniendo 1,000,000 de números del 1 al 1,000,000 inclusive. Como se muestra, insertar y eliminar elementos al principio es mucho más rápido en una deque que en una list y permanece eficiente independientemente del tamaño.

Cuando se trata de insertar o eliminar elementos al principio, tanto list como deque pueden manejar estas tareas de manera eficiente. Por lo tanto, utilizar una deque únicamente para este propósito a menudo no proporciona una ventaja significativa.

1234567891011121314151617181920212223
import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator from collections import deque numbers_list = list(range(1, 10000001)) numbers_deque = deque(numbers_list) @timeit_decorator(number=1000) def append_right(data_structure): data_structure.append(-1) @timeit_decorator(number=1000) def pop_right(data_structure): data_structure.pop() print('List performance:') append_right(numbers_list) pop_right(numbers_list) print('Dequeue performance:') append_right(numbers_deque) pop_right(numbers_deque)
copy

Los resultados de rendimiento son, en efecto, similares para ambas estructuras de datos. Sin embargo, agregar elementos a una list es ligeramente más lento que hacerlo en una deque, ya que las listas, implementadas como arreglos dinámicos, ocasionalmente necesitan redimensionarse al asignar un bloque de memoria más grande y copiar los elementos. En contraste, la estructura basada en bloques de deque evita la redimensión, haciendo que las inserciones sean consistentemente más rápidas. Sin embargo, esta diferencia solo se vuelve notable con listas relativamente grandes.

question mark

¿En cuál de las siguientes situaciones una deque es una mejor opción que una list?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 4

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 7.69

bookUso del Módulo Collections

Desliza para mostrar el menú

Aunque los tipos de datos integrados y los arrays de NumPy cubren la mayoría de las tareas comunes, el módulo collections ofrece estructuras de datos especializadas diseñadas para casos de uso específicos. Entre ellas, deque (cola de doble extremo) destaca por sus importantes beneficios de rendimiento en ciertos escenarios.

A diferencia de las listas, que requieren desplazar elementos al insertar o eliminar desde el principio, un deque permite operaciones eficientes en ambos extremos. Por lo tanto, si necesitas agregar o eliminar elementos frecuentemente desde cualquiera de los extremos de una colección, un deque es una mejor opción.

Ahora, comparemos el rendimiento de list y deque en un escenario práctico:

123456789101112131415161718192021222324252627282930
import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator from collections import deque numbers_list = list(range(1, 10000001)) numbers_deque = deque(numbers_list) @timeit_decorator(number=1000) def list_append_left(): # Insert -1 at the beginning numbers_list.insert(0, -1) @timeit_decorator(number=1000) def deque_append_left(): numbers_deque.appendleft(-1) @timeit_decorator(number=1000) def list_pop_left(): # Remove the element at index 0 (first element) numbers_list.pop(0) @timeit_decorator(number=1000) def deque_pop_left(): numbers_deque.popleft() list_append_left() deque_append_left() list_pop_left() deque_pop_left()
copy

En este ejemplo, se ha creado una list y una deque, cada una conteniendo 1,000,000 de números del 1 al 1,000,000 inclusive. Como se muestra, insertar y eliminar elementos al principio es mucho más rápido en una deque que en una list y permanece eficiente independientemente del tamaño.

Cuando se trata de insertar o eliminar elementos al principio, tanto list como deque pueden manejar estas tareas de manera eficiente. Por lo tanto, utilizar una deque únicamente para este propósito a menudo no proporciona una ventaja significativa.

1234567891011121314151617181920212223
import os os.system('wget https://staging-content-media-cdn.codefinity.com/courses/8d21890f-d960-4129-bc88-096e24211d53/section_1/chapter_3/decorators.py 2>/dev/null') from decorators import timeit_decorator from collections import deque numbers_list = list(range(1, 10000001)) numbers_deque = deque(numbers_list) @timeit_decorator(number=1000) def append_right(data_structure): data_structure.append(-1) @timeit_decorator(number=1000) def pop_right(data_structure): data_structure.pop() print('List performance:') append_right(numbers_list) pop_right(numbers_list) print('Dequeue performance:') append_right(numbers_deque) pop_right(numbers_deque)
copy

Los resultados de rendimiento son, en efecto, similares para ambas estructuras de datos. Sin embargo, agregar elementos a una list es ligeramente más lento que hacerlo en una deque, ya que las listas, implementadas como arreglos dinámicos, ocasionalmente necesitan redimensionarse al asignar un bloque de memoria más grande y copiar los elementos. En contraste, la estructura basada en bloques de deque evita la redimensión, haciendo que las inserciones sean consistentemente más rápidas. Sin embargo, esta diferencia solo se vuelve notable con listas relativamente grandes.

question mark

¿En cuál de las siguientes situaciones una deque es una mejor opción que una list?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 4
some-alt