Ваш список отсортирован, и вы можете использовать это, чтобы уменьшить проблемное пространство.Вместо поиска по всему списку ищите подмножество списка, которое охватывает значения x в пределах 5,66f, поскольку все, что дальше максимума по одной координате, будет дальше, чем вы хотите, независимо от того, какая другая координата.Затем, если вы сохраните начальные позиции каждого значения в списке (т.е. в вашем примере элементы «0» начинаются с 1, а элементы «1» начинаются с 12), вы можете быстро перейти к той части списка, которая вам нужна.,Таким образом, вместо того, чтобы повторять пункты от 0 до 2 миллионов, вы можете вместо этого перебирать пункты с 175839 по 226835.
Пример:
The List
1: (0,1)
2: (0,2)
3: (1,0)
4: (1,1)
5: (2,1)
6: (2,3)
7: (3,1)
8: (3,5)
9: (4,2)
10: (4,5)
11: (5,1)
12: (5,2)
13: (6,1)
14: (6,2)
15: (6,3)
16: (7,1)
17: (7,2)
Start Locations
(0,1)
(1,3)
(2,5)
(3,7)
(4,9)
(5,11)
(6,13)
(7,16)
Если у меня есть точка (3,5)Я хочу найти в списке точки в пределах 2, мне нужно только пройтись по точкам, где x находится между 1 и 5. Поэтому я смотрю на свои начальные местоположения и вижу, что 1 начинается с позиции 3 в списке, и5 заканчивается в положении (13 - 1).Таким образом, вместо итерации от 1 до 17, мне нужно только итерировать от 3 до 12. Если диапазон значений в ваших данных большой, но расстояние для проверки короткое, это значительно сократит количество записей, которые необходимо перебрать,