#python #arrays #list
#питон #массивы #Список
Вопрос:
Я хочу сохранить объект узла (содержащий такие данные, как координаты x и y, а также состояние) в 2-мерном массиве, чтобы я мог получить доступ к объекту следующим образом:
array_variable[x, y]
К сожалению, я не знаю, как это сделать на python, так как я совсем новичок в этом. Вот соответствующий код:
class node:
def init(self, x, y, state):
self.x = x;
self.y = y;
self.state = state;
from node import node;
class grid:
def init(self, x, y):
self.width = x;
self.height = y;
self.g = [x, y];
def set_node(self, x, y, state):
print(len(self.g));
n = node();
n.init(x, y, state);
self.g[x][y] = n;
Комментарии:
1. Я исправил ваш отступ, но
init
должен быть__init__
2. Точки с запятой в конце строк в Python не нужны.
Ответ №1:
Вы можете использовать Numpy для этой цели, определив тип данных как object
:
import numpy as np
array = np.empty((3, 3), dtype=object)
array[0, 0] = Node(...)
Ответ №2:
Вы можете объявить 2d-массив с высотой y и шириной x, заполненный нулями, используя понимание списка следующим образом:
foo = [[0 for _ in range(x)] for _ in range(y)]
Вы можете хранить объекты узла для позиционирования y, x в этом 2d-массиве следующим образом:
n = node()
foo[y][x] = n
Вы можете получить доступ к объекту в позиции y, x из 2d-массива следующим образом:
node = foo[y][x]