[pyar] Tamaño de un arreglo definido dinamicamente

Gonzalo gonchi.sanchez en gmail.com
Mar Ago 10 17:40:08 ART 2010


2010/8/10 Claudio Freire <klaussfreire en gmail.com>:
> Asumamos por un momento que self.vr es, en efecto, una lista.
> (en python se llaman listas, no arreglos, pero se entiende tu punto).
>

;)

> Incluso asumiendo eso, self.vr[k] va a fallar (con IndexError) si es que 'k'
> no es un índice pre-existente en la lista.

Si k vá desde 0 hasta x-1 (siendo x el tamaño de la lista), porqué
debería fallar?

>
> (si self.vr es un diccionario, todo bien).
>
>>
>> Y esto, no me deja hacer:
>> AttributeError: fmgui instance has no attribute 'vr'
>
> Pero self.vr ni es una lista. Self.vr no es. Eso es lo que te dice el error.
>

mi no comprender.. :?
Si en cualquier otra parte del programa puedo definir una variable que
no haya definido antes, porque no puedo hacerlo con esa lista, una vez
que el usuario selecciona el tamaño..?

>>
>> Ok, entonces lo defino:
>> self.vr
>> (aca me da el mismo error)
>
> Porque ahí no estás definiendo nada. Tenés que asignarle algo para
> definir...
>
>>
>> self.vr = 0 #esto en la clase principal
>
> Eso es definir.
>
>>
>> Luego cuando llamo al método:
>> TypeError: 'int' object does not support item assignment
>
> Porque lo definiste como un número (0), no como una lista.

Ahí iba mi pregutna sobre tipado dinámico. ;)

>
> Vos quisiste decir, seguramente, self.vr = []  # <- lista vacía
>
> Aún así, self.vr[k] va a fallar. Porque la lista está vacía y no tiene el
> elemento 'k'.

Pero antes quería cambiarle el tamaño...

>
> Si querés agregarle un elemento a una lista, probás self.vr.append(algo)
>
> O, si querés crear una lista con N elementos todos seteados a None:
> self.vr = [None] * N
>
>

Ambas soluciones me funcionaron, era una receta que no conocía! :)
Muchas gracias por la rapidez de las rptas.
slds,

-- 
Gonzalo.



More information about the pyar mailing list