2010-04-13 18 views
5

en C++ que puedo escribió:Python - multilínea serie

int someArray[8][8]; 
for (int i=0; i < 7; i++) 
    for (int j=0; j < 7; j++) 
     someArray[i][j] = 0; 

Y cómo puedo inicializar matrices de múltiples líneas en Python? Traté:

array = [[],[]] 
for i in xrange(8): 
    for j in xrange(8): 
     array[i][j] = 0 

Respuesta

7
>>> [[0]*8 for x in xrange(8)] 
[[0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0]] 
>>> 
+0

1 por ser el primero en utilizar una lista por comprensión ... –

3

Aquí es un camino más corto:

array = [] 
for i in xrange(8): 
    array.append([0] * 8) 
+1

+1 para recorrer manera :-) – YOU

3
array = [[0]*8 for i in xrange(8)] 
2
[[0]*8 for x in range(8)] 
7

Usted preguntó sobre la inicialización de una lista de listas. Es una estructura de datos muy útil, pero tiene una diferencia importante con respecto a la matriz 2D en C++: no hay garantías de que todas las líneas tengan la misma longitud (es decir, len(a[0])==len(a[1]) (mientras que en C++ tienes esa garantía).

Así que otra solución que podría ser útil, está utilizando NumPy 's array tipo de datos, como esto:

import numpy as np 
array = np.zeros((8,8)) 
+2

Es bueno saber de manera numpy! +1 – YOU