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

269
Vistas
¿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 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