поиск ближайшего значения в списке - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь взять значение из списка и найти самое близкое значение из другого списка, и отсортировать его так, чтобы оно было таким же ... Я не умею объяснять ..

вот мой код :

list1 = [[111, 111], [222, 222], [333, 333]]
list2 = [[223, 223], [112, 112], [334, 334]]
#I need to find the closest value, and put list 2 in same order as list1
#i Want newlist to be [[[112, 112], [223, 223], [334, 334]]
newList = []

Что я должен сделать / посмотреть, чтобы сделать это? Я пытался Google, но просто не могу найти что-нибудь подходящее

edit:


if list1 = [[1, 1], [2, 2]] and list2 = [[2, 2], [100, 100]]

newlist would be [[2,2], [100, 100]]

if list1 = [[2, 2], [1, 1]] and list2 = [[2, 2], [100, 100]]

newlist would be [[100, 100], [2, 2]]

другое редактирование: idk, если это имеет значение, но списки являются координатами.

Ответы [ 3 ]

1 голос
/ 04 марта 2020

вы можете отсортировать индексы первого списка на основе значений списка и использовать их для изменения порядка второго списка:

list1 = [[222, 222], [111, 111], [333, 333]]
list2 = [[223, 223], [112, 112], [334, 334]]

idx = sorted(range(len(list1)), key=lambda i: list1[i])

newList = [list2[i] for i in idx]
newList

вывод:

[[112, 112], [223, 223], [334, 334]]
0 голосов
/ 04 марта 2020

Предполагается, что расстояние между кортежами измеряется по абсолютному значению дельты первого элемента:

import numpy as np
[list2[i] for i in [np.argmin([np.abs(l2[0]-l1[0]) for l2 in list2]) for l1 in list1]]
0 голосов
/ 04 марта 2020

Вы можете попробовать использовать функцию sort ()? :

    list2 = [[223, 223], [112, 112], [334, 334]]

    list2.sort()

Вывод:

    list2 = [[112, 112], [223, 223], [334, 334]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...