Tôi muốn sắp xếp danh sách các bộ dữ liệu theo thứ tự liên tiếp thứ tự liên tiếp, do đó phần tử đầu tiên của mỗi bộ tương đương với phần tử cuối cùng của phần trước.Sắp xếp danh sách các bộ theo thứ tự liên tiếp
Ví dụ:
input = [(10, 7), (4, 9), (13, 4), (7, 13), (9, 10)]
output = [(10, 7), (7, 13), (13, 4), (4, 9), (9, 10)]
tôi đã phát triển một tìm kiếm như thế này:
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)
Có cách nào pythonic để đạt được trật tự như vậy? Và một cách để làm điều đó "tại chỗ" (chỉ với một danh sách)?
Trong vấn đề của tôi, đầu vào có thể được sắp xếp lại theo cách vòng tròn bằng cách sử dụng tất cả các bộ dữ liệu, do đó, điều quan trọng không phải là yếu tố đầu tiên được chọn.
nếu một bộ không khớp với bất kỳ bộ lọc nào khác? – Kasramvd
Ngoài ra, là các cặp duy nhất, hoặc bạn phải xử lý backtracking nếu bạn ghép chúng lên không chính xác lần thử đầu tiên? – ShadowRanger
Tôi không nghĩ một trong hai thuật ngữ * sắp xếp * hoặc * liên tiếp * áp dụng cho vấn đề này. –