Предположим, у нас есть определенное количество точек, распределенных на плоскости в узлах сетки с заданным шагом. Эти точки образуют несколько непрерывных областей.
Мы можем сказать, что точки (если точек более одной) образуют непрерывную область, если для каждой точки в области есть другая точка на расстоянии, меньшем или равном step*sqrt(2).
Необходимо иметь только один список (или словарь) координат и шаг сетки, чтобы распределить координаты по новым массивам. Каждый новый массив должен содержать координаты, принадлежащие определенному региону.
Ниже для наглядности приведено изображение. В данном случае у нас есть три непрерывных региона.

Теперь у меня есть следующая реализация.
из группы импорта itertoolsby шаг = 1 регионы = [] # список списков с точками из определенных регионов while all_equal(list(points.values())) == False: # while не все точки исследованы («точки» — это один словарь с координатами, где ключи — это номера точек, а значения — кортежи с координатами) регион = [] # создаем список для нового региона Region.append(points[list(points.keys())[0]]) # добавляем в новый список первое значение из "points" points[list(points.keys())[0]] = None # «Нет» означает, что эта точка уже исследована для пункта в баллах: для региона_точка в регионе: ifpoints[point] != None: # если эта точка еще не исследована if distance(points[point], Region_point)