Сортировка списков: получение элементов списка используя индексы из другого списка

269 просмотра
0
0 Комментариев

Задачей является построение минимальной выпуклой оболочки в поле с 40 точками. Благодаря алгоритму Грэхема я нашел номера вершин выпуклого многоугольника, которые записаны в список S (Например:4,2,15,1) . Также у меня есть список А с координатами всех 40 точек (Например: (100,250),(34,78)), номера вершин соответствуют индексам точек из этого списка. Мне надо узнать координаты вершин выпуклого многоугольника в определенном порядке как в списке S, чтобы можно было правильно их соединить (точки на экране появляются рандомно). У меня получилось найти координаты этих точек, но они выводятся не в правильном порядке.

for i in A:
    if A.index(i) in S:
        gran.append(i)

Т.е. если список S имеет элементы (4,2,15,1), то в конечном списке у меня будут координаты сначала точки 1 потом 2 и т.д.


Добавить комментарий

2 Answers

Python Опубликовано 10.12.2018
0

В общем, я ничего не понял, но чтобы достать элементымассива в нужном порядке, можно сделать так, воспользовавшись методом itemgetter

A = [(100,250), (34,78), (1,2)]
S = [2,0,1]
 
from operator  import itemgetter
r = itemgetter(*S)(A)
print (r) # ((1, 2), (100, 250), (34, 78))

тут можно потренироваться

Добавить комментарий
0

ans = [A[i] for i in S]
Если правильно понял

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up