Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

220
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

0

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

over 4 years ago · Santiago Trujillo Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda