Esta noticia fue analizado por expertos para garantizar la veracidad de nuestra esta reseña.
Solución:
Aquí hay cuatro variantes:
- una creación de lista incremental
- lista “preasignada”
- array.array()
- numpy.ceros()
python -mtimeit -s"N=10**6" "a = []; app = a.append;"
"for i in xrange(N): app(i);"
10 loops, best of 3: 390 msec per loop
python -mtimeit -s"N=10**6" "a = [None]*N; app = a.append;"
"for i in xrange(N): a[i] = i"
10 loops, best of 3: 245 msec per loop
python -mtimeit -s"from array import array; N=10**6" "a = array('i', [0]*N)"
"for i in xrange(N):" " a[i] = i"
10 loops, best of 3: 541 msec per loop
python -mtimeit -s"from numpy import zeros; N=10**6" "a = zeros(N,dtype='i')"
"for i in xrange(N):" " a[i] = i"
10 loops, best of 3: 353 msec per loop
Muestra que [None]*N
es el mas rapido y array.array
es el más lento en este caso.
puede crear una lista de la longitud conocida como esta:
>>> [None] * known_number
Mira esto:
In [7]: %timeit array.array('f', [0.0]*4000*1000)
1 loops, best of 3: 306 ms per loop
In [8]: %timeit array.array('f', [0.0])*4000*1000
100 loops, best of 3: 5.96 ms per loop
In [11]: %timeit np.zeros(4000*1000, dtype='f')
100 loops, best of 3: 6.04 ms per loop
In [9]: %timeit [0.0]*4000*1000
10 loops, best of 3: 32.4 ms per loop
Así que nunca uses array.array('f', [0.0]*N)
utilizar array.array('f', [0.0])*N
o numpy.zeros
.
Si te animas, tienes la opción de dejar una división acerca de qué le añadirías a este tutorial.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)