Я хочу отсортировать список кортежей в последовательном порядке, поэтому первый элемент каждого кортежа будет равен последнему элементу предыдущего.
Например:
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)
Есть ли питонический способ достижения такого порядка? И способ сделать это "на месте" (только с одним списком)?
В моей проблеме вход может быть упорядочен круговым способом, используя все кортежи, поэтому не важно, какой первый выбранный элемент.