Хранить объект в 2-мерном массиве в python?

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