Сортировать список кортежей в последовательном порядке

Я хочу отсортировать список кортежей впоследовательный заказТаким образом, первый элемент каждого кортежа равен последнему элементу предыдущего.

Например:

input = [(10, 7), (4, 9), (13, 4), (7, 13), (9, 10)]
output = [(10, 7), (7, 13), (13, 4), (4, 9), (9, 10)]

Я разработал такой поиск:

output=[]
given = [(10, 7), (4, 9), (13, 4), (7, 13), (9, 10)]
t = given[0][0]
for i in range(len(given)):
      # search tuples starting with element t
      output += [e for e in given if e[0] == t]
      t = output[-1][-1] # Get the next element to search

print(output)    

Есть ли питонный способ для достижения такого порядка? И как сделать это «на месте» (только со списком)?

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

Ответы на вопрос(9)

Ваш ответ на вопрос