Crear objetos con nombres similares con un ciclo for en python

publicado por: Anonymous

Quiero crear 24 matrices así:

import numpy as np

tabla1 = np.empty((25*5,3 + 11))
tabla2 = np.empty((25*5,3 + 11))
.
.
.
tabla24 = np.empty((25*5,3 + 11))

Para no tener que escribirlo 24 veces, pensé en usar un ciclo for, pero no conozco la sintaxis adecuada.

Probé esto:

for i in range(1, 25):
    tabla{i} = np.empty((25*5,3 + 11))

Pero es incorrecto.

¿Cuál sería la forma correcta de hacerlo?

solución

Lo que queres hacer se puede usando la función exec, en este ejemplo creo e inicializo 25 objetos cuyo nombre va de variable1 a variable25:

for i in range(1,26):
    exec('variable{} = 0'.format(i))

Usando tu ejemplo

for i in range(1,26):
    exec('tabla{} = np.empty((25*5,3 + 11))'.format(i))

Un comentario importante: exec es una función potencialmente peligrosa, en particular si la usamos con sentencias escritas por el usuario, debiéramos limitar su uso a casos bien controlados.

Otra forma un poco más extraña es acceder directamente al diccionario globals() o locals(), por ejemplo:

for i in range(1,26):
    globals()['tabla{}'.format(i)] = np.empty((25*5,3 + 11))
Respondido por: Anonymous

Leave a Reply

Your email address will not be published.