Надеюсь, я понял ваш вопрос. Это напечатает все комбинации точек, где они имеют одну общую координату (x или y):
points = [[452, 268],
[303, 181],
[452, 331],
[378, 217],
[572, 476],
[464, 218],
[42, 440],
[428, 476],
[42, 36],
[478, 35],
[232, 275],
[428, 440],
[378, 36],
[572, 35]]
from pprint import pprint
from itertools import combinations, chain
x_points, y_points = {}, {}
for p in points:
x_points.setdefault(p[0], []).append(p)
y_points.setdefault(p[1], []).append(p)
out = []
for p in x_points.values():
for c in combinations(p, 2):
out.append(list(chain(*c)))
for p in y_points.values():
for c in combinations(p, 2):
out.append(list(chain(*c)))
pprint(out)
Печать:
[[452, 268, 452, 331],
[378, 217, 378, 36],
[572, 476, 572, 35],
[42, 440, 42, 36],
[428, 476, 428, 440],
[572, 476, 428, 476],
[42, 440, 428, 440],
[42, 36, 378, 36],
[478, 35, 572, 35]]
Для points = [[452, 268], [452, 331],[404, 268]]
:
Результат:
[[452, 268, 452, 331], [452, 268, 404, 268]]