[pyar] Tamaño de un arreglo definido dinamicamente

Claudio Freire klaussfreire en gmail.com
Mar Ago 10 17:09:35 ART 2010


2010/8/10 Gonzalo <gonchi.sanchez en gmail.com>

> Hola a tod en s, les comento que lo que quiero hacer en realidad no se si
> se puede (no soy experto en python ni mucho menos), y no leí nada en
> la doc que me lo impida (o permita) hacer, el problema es que se queja
> el intérprete.
>
> Quiero definir el tamaño de un arreglo, en tiempo de ejecución, es decir:
>    def set_dificultad(self, x):
>        self.tamanio = x
>        k = 0
>        while k<x:
>            self.vr[k] = VACIO
>

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 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.


> 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.

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'.

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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100810/ec3c1419/attachment.html>


More information about the pyar mailing list