2D массив объектов в Python - PullRequest
6 голосов
/ 26 июня 2011

Я конвертирую некоторый Java-код в код Python, и в итоге я был озадачен тем, как преобразовать 2D-массив объектов в Java в Python.

Java-код:

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

Как бы я сделал это в Python?

Ответы [ 2 ]

12 голосов
/ 26 июня 2011

Я думаю, это то, что вы хотите

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

Но инициализация списков не всегда является хорошей практикой. Для матриц это может иметь смысл.

Если вам интересно: документация о список понятий

Демо-код:

>>> 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 голосов
/ 16 февраля 2013

Python на самом деле не делает двумерные массивы. Вот лучшее объяснение

Вместо него есть списки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...