Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

214
Vistas
¿Cómo mirar al frente de deque sin estallar?

Quiero verificar una condición en el frente de una cola antes de decidir si aparecer o no. ¿Cómo puedo lograr esto en python con collections.deque?

 list(my_deque)[0]

parece feo y pobre para el rendimiento.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

TL; DR: suponiendo que su deque se llame d , simplemente inspeccione d[0] , ya que el elemento "más a la izquierda" en un deque es el frente (es posible que desee probar antes de la longitud del deque para asegurarse de que no esté vacío). Tomando la sugerencia de @asongtoruin, use if d: para probar si el deque está vacío (es equivalente a if len(d) == 0: , pero más pitónico)

###¿Por qué no convertir a la lista? Porque los deque son indexables y estás probando el front . Si bien un deque tiene una interfaz similar a una lista, la implementación está optimizada para operaciones frontales y posteriores. Citando la documentación :

Los deques admiten adiciones y elementos emergentes seguros para subprocesos y eficientes en memoria desde cualquier lado del deque con aproximadamente el mismo rendimiento de O(1) en cualquier dirección.

Aunque los objetos de lista admiten operaciones similares, están optimizados para operaciones rápidas de longitud fija e incurren en costos de movimiento de memoria O(n) para operaciones pop(0) e inserción(0, v) que cambian tanto el tamaño como la posición de la representación de datos subyacente. .

La conversión a lista puede ser deseable si tiene muchas operaciones que acceden al "medio" de la cola. Nuevamente citando la documentación:

El acceso indexado es O(1) en ambos extremos pero se ralentiza a O(n) en el medio. Para un acceso aleatorio rápido, utilice listas en su lugar.

La conversión a list es O(n), pero cada acceso subsiguiente es O(1).

over 4 years ago · Santiago Trujillo Denunciar

0

Simplemente puede encontrar el último elemento usando my_deque[-1] o my_deque[len(my_deque)-1] .

over 4 years ago · Santiago Trujillo Denunciar

0

Aquí hay una implementación simple que me permitió verificar el frente de la cola antes de aparecer (usando while y q[0] ):

Aplique su propia condición contra q[0] , antes de q.popleft() , a continuación:

 testLst = [100,200,-100,400,340] q=deque(testLst) while q: print(q) print('{}{}'.format("length of queue: ", len(q))) print('{}{}'.format("head: ", q[0])) print() q.popleft()

salida :

 deque([100, 200, -100, 400, 340]) length of queue: 5 head: 100 deque([200, -100, 400, 340]) length of queue: 4 head: 200 deque([-100, 400, 340]) length of queue: 3 head: -100 deque([400, 340]) length of queue: 2 head: 400 deque([340]) length of queue: 1 head: 340
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda