在Java中你可以这样做:Node[][] nodes;
其中Node.java是一个自定义类。我如何在python中进行Node.py:
class Node(object):
def __init__(self):
self.memory = []
self.temporal_groups = []
我已导入numpy
并创建了对象类型
typeObject = numpy.dtype('O') # O stands for python objects
nodes = ???
答案 0 :(得分:1)
您可以这样尝试,在您的节点类中创建一个将返回通用数组的函数:
def genArray(a, b):
return [[0 for y in range(a)] for x in range(b)]
然后你可以按照你想要的方式分配它们。也许您可以将0更改为节点对象。如果有帮助,请告诉我
答案 1 :(得分:0)
您有两个简单的选择:使用numpy
或声明嵌套列表。后一种方法在概念上更类似于Node[][]
,因为它允许不规则的列表,Java也是如此,但前一种方法可能会使处理更快。
numpy数组
在numpy
中制作数组:
import numpy as np
x = np.full((m, n), None, dtype=np.object)
在numpy
中,您必须预先了解数组的大小(此处为m
,n
)。有一些方法来增长数组,但它们效率不高,特别是对于大型数组。 np.full
将使用您想要的任何引用的副本初始化您的数组。您可以在此之后修改元素。
Python列表
要创建一个参差不齐的列表,您不必做太多事情:
x = []
这会创建一个空列表。这相当于Java中的Node[][]
,因为它也声明了一个列表。主要区别在于Python列表可以更改大小并且是无类型的。它们实际上总是Object[]
。
要向列表中添加更多维度,只需执行x[i] =
[]
,这会将嵌套列表插入到外部列表中。这类似于定义类似
Node[][] nodes = new Node[m][];
nodes[i] = new Node[n];
其中m
是嵌套列表(行)的数量,n
是每个列表(列)中元素的数量。同样,主要区别在于,一旦在Python中有了一个列表,就可以像Java一样扩展或收缩它。
像在Java中一样使用x[i][j]
进行操作。您可以通过x.append([])
或x[i] = []
添加新的子列表,其中i
是x
末尾的索引。