Python: сортировка и добавление списка без изменения порядка - PullRequest
1 голос
/ 23 марта 2020

У меня есть два списка, скажем:

[[37.1, -122.1], [37.2,-122.2], [37.3,-122.3]]

&

[[37.3, -122.3], [38.1,-123.1], [38.2,-123.2]]

Мне нужно проверить, если первый ИЛИ последний элемент в этом списке lats / lngs совпадает с другой первой ИЛИ последней парой.

В этом случае последняя пара первого списка [37.3,-122.3] равна первой паре второй.

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

Это важно, поскольку оно формирует линию, которая должна быть нарисована на карте.

Конечный результат будет:

[[37.1, -122.1], [37.2,-122.2], [37.3, -122.3], [38.1,-123.1], [38.2,-123.2]]

Это должен быть масштабируемый подход так как у меня есть десятки из них, которые должны основываться друг на друге.

Редактировать

Ответы, которые я получил, великолепны, но это нужно проверить только сначала или последний, и он должен изменить порядок, если результатом является list2 [-1] == list1 [0]

Другой пример.

[[37.1, -122.1], [37.2,-122.2], [37.3,-122.3]]

&

[[37.3, -122.3], [38.1,-123.1], [38.2,-123.2]]

&

[[37.1, -122.1], [39.1,-124.1], [39.2,-124.2]]

В этом случае результирующий список будет

[[39.2,-124.2], [39.1,-124.1], [37.1, -122.1], [37.2,-122.2], [37.3,-122.3], [38.1,-123.1], [38.2,-123.2]]

Ответы [ 2 ]

0 голосов
/ 23 марта 2020

Попробуйте это:

list_1 = [[37.1, -122.1], [37.2,-122.2], [37.3,-122.3]]
list_2 = [[37.3, -122.3], [38.1,-123.1], [38.2,-123.2]]

for i in list_2:
    if i not in list_1:
        list_1.append(i)

print(list_1)

>>> [[37.1, -122.1], [37.2, -122.2], [37.3, -122.3], [38.1, -123.1], [38.2, -123.2]]
0 голосов
/ 23 марта 2020

вы можете использовать оператор if:

line1 = [[37.1, -122.1], [37.2,-122.2], [37.3,-122.3]]
line2 = [[37.3, -122.3], [38.1,-123.1], [38.2,-123.2]]

result = [] # in case that first/last do not match
if line1[-1] == line2[0]:
    result = line1 + line2[1:]
elif line2[-1] == line1[0]:
    result = line2 + line1[1:]

print(result)

вывод:

[[37.1, -122.1], [37.2, -122.2], [37.3, -122.3], [38.1, -123.1], [38.2, -123.2]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...