Какой самый быстрый способ решить следующую я буду объединять несколько списков на основе общей головы или хвостаприсоединиться списки на основе общей головы или хвоста
input = ([5,6,7], [1,2,3], [3,4,5], [8, 9])
output = [1, 2, 3, 4, 5, 6, 7]
Какой самый быстрый способ решить следующую я буду объединять несколько списков на основе общей головы или хвостаприсоединиться списки на основе общей головы или хвоста
input = ([5,6,7], [1,2,3], [3,4,5], [8, 9])
output = [1, 2, 3, 4, 5, 6, 7]
>>> 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]
Спасибо SilentGhost. Это достаточно общее (str и int) и отлично работает. Есть ли общее название для этого типа метода. Я называю это 'tiling list' – Joey
может быть http://en.wikipedia.org/wiki/Linked_list? – SilentGhost
вход = ([5,6,7], [1,2,3], [3,4,5], [8, 9], [9, 10, 11], [12]) output = ([1, 2, 3, 4, 5, 6, 7], [8, 9, 10, 11]) - рекурсия хорошая идея для этого случая? – Joey
, что вы подразумеваете под общей головой или хвост. ? вы должны подробно рассказать о том, как вы получаете результат – ghostdog74
Мне нужен метод, который может присоединиться к [5,6,7] и [3,4,5] на 5, чтобы сформировать [3, 4, 5, 6, 7] и [ 1,2,3] к этому выходу на 3, чтобы сформировать [1, 2, 3 4, 5, 6, 7] – Joey
, что относительно '([1, 2, 3], [3, 4], [3, 4 , 5, 6]) 'case? –