Chcę posortować listę krotek w kolejno następujących po sobie , więc pierwszy element każdej krotki jest równy ostatniemu elementowi poprzedniej.Sortuj listę krotek w następującej kolejności
Na przykład:
input = [(10, 7), (4, 9), (13, 4), (7, 13), (9, 10)]
output = [(10, 7), (7, 13), (13, 4), (4, 9), (9, 10)]
I opracowali szukanie takiego:
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)
Czy istnieje pythonic sposobem osiągnięcia takiego zamówienia? A sposób to zrobić "w miejscu" (tylko z listą)?
W moim problemie, dane wejściowe mogą zostać zmienione w sposób okrągły za pomocą wszystkich krotek, więc nie jest ważne, aby pierwszy element został wybrany.
co się stanie, jeśli jedna krotka nie pasuje do żadnej z pozostałych? – Kasramvd
Czy parowania są unikalne, czy też trzeba się z nimi wycofać, jeśli paruje się je niepoprawnie podczas pierwszej próby? – ShadowRanger
Nie sądzę, aby którykolwiek z warunków * sort * lub * consecutive * dotyczył tego problemu. –