一只斗牛犬
如果您熟悉 Python 中的 OOP 并想要自定义,我建议您自己从头开始编写节点对象,并实现它们类似于双向链表,其中每个节点都持有对其所有邻居的引用。如果您坚持将所有节点保存在某种类似数组的对象中,我会建议使用类似于具有六边形网格的视频游戏如何处理其坐标的索引的二维数组对象。n1 - n2 - n3
\ / \ / \
n4 - n5 - n6
/ \ / \ /
n7 - n8 - n9使用上图,您可以创建类似ls = [[n1,n2,n3],[n4,n5,n6],[n7,n8,n9]]. 偶数行的右下节点的列索引将是它自己的列索引,而左下节点将是它的列索引-1(例如,n2在偶数行 0 中,引用n5它将是ls[1,1]sincen2的行列索引是 [0,1]。要引用n4它将是ls[1,0])。同时对于奇数行,它的右下节点列索引将是它自己的col索引+1,它的左下节点列索引是它自己的col索引。(示例:n5索引是 [1,1] 在奇数行 1,n9将是ls[2,2]并且n8将是ls[2,1])。编辑:我索引的方式ls是通过 numpy 的索引方法。如果您使用的是 python 内置列表,则需要单独的括号(例如,ls[2,1]在 numpy 中ls[2][1]用于 python 内置列表)