[pyar] Crear una lista gigante

Jesús Francisco jgomo3 en gmail.com
Sab Jun 5 22:27:37 ART 2010


El día 5 de junio de 2010 18:28, Mariano Guerra
<luismarianoguerra en gmail.com> escribió:
> 2010/6/5 Jesús Francisco <jgomo3 en gmail.com>:
>> ¿cómo es la forma más rápida en Python de crear una lista de N
>> elementos y todos inicializados en un valor x? Una forma es:
>>
>> [x]*N
>>
>> Pero me gustaría algo tan rápido como el calloc de C en el caso x==0.
>> Esto porque la versión que escribí es O(N) y si no me equivoco calloc
>> es O(1). No puedo usar numpy, solo la Biblioteca estándar de Python.
>> ¿es lo que escribí la forma más rápida?
>
> tu forma parece ser la mas rapida de las 3 que probe
>
> mariano en ganesha:~$ python -m timeit -n 10000 "list(1 for i in xrange(1000))"
> 10000 loops, best of 3: 134 usec per loop
> mariano en ganesha:~$ python -m timeit -n 10000 "[1]*1000"
> 10000 loops, best of 3: 8.41 usec per loop
> mariano en ganesha:~$ python -m timeit -n 10000 "[1 for i in xrange(1000)]"
> 10000 loops, best of 3: 77.3 usec per loop
>
> alguna otra para probar?
>

Usando array.

jgomo3 en laptopa:~$ python3.1 -m timeit -s "import array; import
itertools" "array.array('i', itertools.repeat(0, 1000))"
10000 loops, best of 3: 177 usec per loop
jgomo3 en laptopa:~$ python3.1 -m timeit -s "import array; import
itertools" "array.array('i', [0]*1000)"
10000 loops, best of 3: 99.6 usec per loop
jgomo3 en laptopa:~$ python3.1 -m timeit "[0]*1000"
100000 loops, best of 3: 6.14 usec per loop

Para hacer un array necesitas una lista o string o iterable. No le veo
sentido en esta prueba hacer una lista para hacer un array. Pero no
hayo mejor manera para hacer un array de ceros que hacienso la lista
antes. Nuevo dilema.

 _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>



More information about the pyar mailing list