2017-05-27 1 views
1

Par exemple list = [[1,0], [2,1], [6,2], [7,6], [7,8] , [15,13], [8,15]] montre arbrepython comment lier la sous-liste ensemble dans une liste qui décrivent un arbre

 _7_ 
    _6 8_ 
_2  _15 

comment obtenir une nouvelle liste contient tous ces numéro. comme la liste d'exemple =

[[1,0], [2,1], [6,2], [7,6], [7,8], [15,13], [ 8,15]]

la sortie sera new_list = [0,1,2,6,7,8,15,13] (pour ne pas important) Mon plus gros problème est de relier [6,2 ], [7,6], [7,8], [8,15] ensemble

+1

Qu'est-ce que vous essayez exactement de faire. Que demandez-vous? –

+0

Ce que vous semblez demander est une implémentation d'un algorithme Depth-First-Search. J'utiliserais une classe Tree auxiliaire pour représenter cela. –

+0

J'essaye d'obtenir tous les noeuds (nombres) donnés dans la liste et les mets dans une nouvelle liste – jason

Répondre

1

Laissant Arbre et la théorie des graphes de côté:

list =[[1,0],[2,1],[6,2],[7,6],[7,8],[15,13],[8,15]] 

uniq = {} 

for i in list: 
    uniq.update({i[0]: True, i[1]: True}) 

print(uniq.keys()) 

>>> [0, 1, 2, 6, 7, 8, 13, 15] 

En utilisant python set:

list =[[1,0],[2,1],[6,2],[7,6],[7,8],[15,13],[8,15]] 

uniq = set() 

for i in list: 
    uniq.add(i[0]) 
    uniq.add(i[1]) 

print uniq 
1

si l'ordre n'a pas d'importance, vous pouvez boucle à travers le list et sous-list et vérifier si l'élément est pas new_list:

list = [[1, 0], [2, 1], [6, 2], [7, 6], [7, 8], [15, 13], [8, 15]] 
    new_list = [] 
    for sub in list: 
     for elem in sub: 
      if elem not in new_list: 
       new_list.append(elem) 
    print new_list 

sortie:

[1, 0, 2, 6, 7, 8, 15, 13] 
2

simple, si l'ordre ne m atter:

l =[[1,0],[2,1],[6,2],[7,6],[7,8],[15,13],[8,15]] 
# flatten list 
t = sum(l,[]) 
# transform in a set removing duplicate values 
# otherwise if u want to keep the order you have to use an OrderedDict 
list(set(t)) # [0, 1, 2, 6, 7, 8, 13, 15]