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