объединить списки, основанные на общей голове или хвосте

1

Каков самый быстрый способ решить следующие Я присоединяюсь к нескольким спискам, основанным на общей голове или хвосте.

input = ([5,6,7], [1,2,3], [3,4,5], [8, 9])
output = [1, 2, 3, 4, 5, 6, 7]
  • 3
    что вы имеете в виду под общей головой или хвостом. ? Вы должны уточнить, как вы получите выход
  • 0
    Я хотел бы, чтобы метод, который может объединить [5,6,7] и [3,4,5] на 5, чтобы сформировать [3, 4, 5, 6, 7] и [1,2,3] к этому выводу на 3, чтобы сформировать [1, 2, 3 4, 5, 6, 7]
Показать ещё 4 комментария
Теги:
list
join
tail
head

1 ответ

1
Лучший ответ
>>> def chain(inp):
    d = {}
    for i in inp:
        d[i[0]] = i[:], i[-1]
    l, n = d.pop(min(d))
    while True:
        lt, n = d.pop(n, [None, None])
        if n is None:
            if len(d) == len(inp) - 1:
                l, n = d.pop(min(d))
                continue
            break
        l += lt[1:]
    return l

>>> chain(input)
[1, 2, 3, 4, 5, 6, 7]
>>> chain(([5,6,7], [1,2,10], [3,4,5], [8, 9]))
[3, 4, 5, 6, 7]
  • 0
    Спасибо SilentGhost. Он достаточно общий (str и int) и работает отлично. Есть ли общее название для этого типа метода. Я называю это «список листов»
  • 0
    может быть en.wikipedia.org/wiki/Linked_list ?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню