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

272
Visualizações
¿Por qué list(x for x in a) es más rápido para a=[0] que para a=[]?

Probé list(x for x in a) con tres versiones diferentes de CPython. En a = [0] es significativamente más rápido que en a = [] :

 3.9.0 64-bit 3.9.0 32-bit 3.7.8 64-bit a = [] a = [0] a = [] a = [0] a = [] a = [0] 465 ns 412 ns 543 ns 515 ns 513 ns 457 ns 450 ns 406 ns 544 ns 515 ns 506 ns 491 ns 456 ns 408 ns 551 ns 513 ns 515 ns 487 ns 455 ns 413 ns 548 ns 516 ns 513 ns 491 ns 452 ns 404 ns 549 ns 511 ns 508 ns 486 ns

Con tuple en lugar de list , es lo esperado al revés:

 3.9.0 64-bit 3.9.0 32-bit 3.7.8 64-bit a = [] a = [0] a = [] a = [0] a = [] a = [0] 354 ns 405 ns 467 ns 514 ns 421 ns 465 ns 364 ns 407 ns 467 ns 527 ns 425 ns 464 ns 353 ns 399 ns 490 ns 549 ns 419 ns 465 ns 352 ns 400 ns 500 ns 556 ns 414 ns 474 ns 354 ns 405 ns 494 ns 560 ns 420 ns 474 ns

Entonces, ¿por qué la list es más rápida cuando (y el iterador del generador subyacente) tiene que hacer más?

Probado en Windows 10 Pro 2004 de 64 bits.

Código de referencia:

 from timeit import repeat setups = 'a = []', 'a = [0]' number = 10**6 print(*setups, sep=' ') for _ in range(5): for setup in setups: t = min(repeat('list(x for x in a)', setup, number=number)) / number print('%d ns' % (t * 1e9), end=' ') print()

Tamaños de bytes, que muestran que no se sobreasigna para la entrada [] pero sí para la entrada [0] :

 >>> [].__sizeof__() 40 >>> list(x for x in []).__sizeof__() 40 >>> [0].__sizeof__() 48 >>> list(x for x in [0]).__sizeof__() 72
over 4 years ago · Santiago Trujillo
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