[pyar] Crear una lista gigante

Alejandro Santos listas en alejolp.com
Dom Jun 6 14:12:48 ART 2010


Roberto Alsina wrote:
> On Saturday 05 June 2010 23:29:11 Alejandro Santos wrote:
>> Jesús Francisco wrote:
>>> ¿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?
>> Crear e inicializar un array o lista de N elemento siempre va a ser O(N)
>> de una forma u otra. Capaz puedas bajar cuánto afectan las constantes
>> pero... siempre vas a tener que procesar esos N elementos.
> 
> Hmmm.... no sé, che.
> O sea, si cuando decimos una lista hablamos de list() sí, pero si hacés una 
> lista sparse con un valor default debería ser O(1) o estoy muy dormido 
> todavía?
> 
> Claro, no tengo una implementación de esa estructura a mano ;-)

No entendí lo de la lista sparse, yo tambien estoy muy dormido...

Que algo sea O(1) ú O(N) es muy subjetivo. Por ejemplo esto es O(N):

z = 0
for x in xrange(N):
    for a in xrange(1000000):
        for b in xrange(1000000):
            z += calcular_algo(x, a, b)

Los dos ciclos for de más adentro son constantes.

-- 
Alejandro Santos
http://www.alejolp.com.ar




More information about the pyar mailing list