2011-06-25 23 views
6

Estoy convirtiendo algunos códigos java a python y terminé confundiéndome sobre cómo convertir una matriz 2D de objetos en Java a python.2D matriz de objetos en Python

código Java:

private Node nodes[][] = new Node[rows][columns]; 

¿Cómo puedo hacer esto en Python?

+0

Básicamente, una lista de listas. Pero es * muy * probable que no haya ninguna razón para comenzar con la inicialización de la lista. Vea si una lista de comprensión funciona en su caso, de lo contrario, escríbala como un bucle con 'nodes.append ([])' y 'nodes.extend' o' nodes.append' en otro ciclo. – delnan

Respuesta

10

creo que eso es lo que quiere

nodes = [[Node() for j in range(cols)] for i in range(rows)] 

Pero no siempre es una buena práctica para inicializar las listas. Para matrices, puede tener sentido.

Si usted se pregunta: Documentación sobre list comprehensions

código de demostración:

>>> class Node: 
     def __repr__(self): 
     return "Node: %s" % id(self) 
>>> cols = 3 
>>> rows = 4 
>>> nodes = [[Node() for j in range(cols)] for i in range(rows)] 
>>> from pprint import pprint 
>>> pprint(nodes) 
[[Node: 41596976, Node: 41597048, Node: 41596904], 
[Node: 41597120, Node: 41597192, Node: 41597336], 
[Node: 41597552, Node: 41597624, Node: 41597696], 
[Node: 41597768, Node: 41597840, Node: 41597912]] 
+0

curioso si olvidó un [] allí? – nobody

+0

@nobody no, ¿por qué? – JBernardo

+0

Parece gracioso; Hubiera supuesto que hubiera sido algo como: nodes = [[Node() para j en el rango (cols)], [para i en el rango (filas)]] – nobody