Quel est le meilleur moyen de résoudre le suivant, je rejoindre plusieurs listes basées sur la tête commune ou la queuejoindre listes basées sur la tête commune ou la queue
input = ([5,6,7], [1,2,3], [3,4,5], [8, 9])
output = [1, 2, 3, 4, 5, 6, 7]
Quel est le meilleur moyen de résoudre le suivant, je rejoindre plusieurs listes basées sur la tête commune ou la queuejoindre listes basées sur la tête commune ou la queue
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]
Merci SilentGhost. C'est assez général (str et int) et fonctionne parfaitement. Y a-t-il un nom général pour ce type de méthode? Je l'appelle «liste de carrelage» – Joey
peut être http://en.wikipedia.org/wiki/Linked_list? – SilentGhost
entrée = ([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]) la récursivité est-elle une bonne idée pour ce cas? – Joey
ce que vous entendez par la tête commune ou queue. ? vous devriez élaborer sur comment vous obtenez la sortie – ghostdog74
Je voudrais une méthode qui peut joindre [5,6,7] et [3,4,5] sur 5 pour former [3, 4, 5, 6, 7] et [ 1,2,3] à cette sortie sur 3 pour former [1, 2, 3 4, 5, 6, 7] – Joey
qu'en est-il de '([1, 2, 3], [3, 4], [3, 4 , 5, 6]) 'cas? –