Как соединить все точки графа и записать в отдельный массив

l = [1,4,3,2]
R = [(1,2,1), (1,3,4),(1,4,2),(1,5,4),(2,3,4),(2,4,3),(2,5,4),(3,4,1),(3,5,3),(4,5,2)]

У меня есть вот это и мне нужно получить [(1,4,2),(3,4,1),(2,3,4),(1,2,1)]

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


Ответы (2 шт):

Автор решения: Stanislav Volodarskiy

Пару элементов из l ищем среди префиксов элементов из R:

l = [1,4,3,2]
R = [(1,2,1), (1,3,4),(1,4,2),(1,5,4),(2,3,4),(2,4,3),(2,5,4),(3,4,1),(3,5,3),(4,5,2)]

d = {frozenset(r[:2]): r for r in R} 
g = [d[frozenset(p)] for p in zip(l, l[1:] + l[:1])]
print(g)
[(1, 4, 2), (3, 4, 1), (2, 3, 4), (1, 2, 1)]

P.S. Задача поставлена замечательно неясно.

→ Ссылка
Автор решения: Artem
def graph(R,l):
r = []
k = 0

for q in R:
    if(l[0] == q[0] and l[-1] == q[1]):
        r.append(q)
    elif(l[0] == q[1] and l[-1] == q[0]):
        r.append(q)

for k in range(0,len(l)-1):
    for x in R:
        if(l[k] == x[0] and l[k+1] == x[1]):
            r.append(x)
        elif(l[k] == x[1] and l[k+1] == x[0]):
            r.append(x)
return r
→ Ссылка