Me gustaría crear un array 3D en Python (2.7) para usarlo así:
distance[i][j][k]
Y los tamaños del array deberían ser el tamaño de una variable que tengo. (nnn)
He intentado usar
distance = [[[]*n]*n]
pero no parece funcionar.
¿Alguna idea? Muchas gracias.
EDIT: Sólo puedo utilizar las bibliotecas deafult, y el método de multiplicar (es decir, [[0]n]n) no funciona porque están vinculados a la misma puntero y necesito todos los valores a ser individual
EDIT2: Ya resuelto por la respuesta de abajo.
Los numpy.array
s están diseñados justo para este caso:
numpy.zeros((i,j,k))
te dará un array de dimensiones ijk, lleno de ceros.
Dependiendo de para qué la necesites, numpy puede ser la biblioteca adecuada para tus necesidades.
La forma correcta sería
[[[0 for _ in range(n)] for _ in range(n)] for _ in range(n)]
(Lo que usted está tratando de hacer debe ser escrito como (para NxNxN)
[[[0]*n]*n]*n
pero eso no es correcto, ver @Adaman comentario por qué).
Si insistes en que todo se inicialice como vacío, necesitas un juego extra de corchetes en el interior ([[]] en lugar de [], ya que esto es "una lista que contiene 1 lista vacía para duplicar" en lugar de "una lista que no contiene nada para duplicar"):
distance=[[[[]]*n]*n]*n