2011-06-25 70 views
6

我正在将一些java代码转换为python代码,并最终陷入了如何将Java中的对象的二维数组转换为python。在Python中的二维数组对象

Java代码:

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

我将如何做到这一点在Python?

+0

基本上,列表的列表。但是非常有可能没有理由开始初始化列表。看看列表理解是否适用于你的情况,否则在另一个循环中用'nodes.append([])'和'nodes.extend'或'nodes.append'作为循环来写。 – delnan

回答

10

我想这就是你想要

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

什么,但它并不总是一个很好的做法来初始化列表。对于矩阵它可能是有道理的。

如果你想知道:文档关于list comprehensions

演示代码:

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

好奇,如果你忘了在那里[]? – nobody

+0

@nobody不,为什么? – JBernardo

+0

看起来很有趣;我会假设它会是这样的:节点= [[节点()对于范围(cols)],[对于范围(行)]] – nobody