2015-05-06 4 views
0
nodes=['a','b','c','d','e','f','g'] 
G.add_edges_from([('a','f'),('a','d'),('a','b'),('a','e'),('b','g'),('b','e'),('b','c'),('c','b'),('c','d'),('d','a'),('d','c'),('e','b'),('e','a'),('f','a'),('g','b')]) 
nodlen=len(nodes) 
for i in range(nodlen): 
    print(G.neighbors(nodes[i])) 

Я получаю весь список (как показано ниже), но мне нужно получить доступ к отдельным элементам из этого списка.Я не получаю список предметов отдельно

['e', 'b', 'f', 'd'] 
['e', 'c', 'g', 'a'] 
['b', 'd'] 
['c', 'a'] 
['b', 'a'] 
['a'] 
['b'] 
+1

Так почему бы не использовать индексацию на возвращаемом значении 'G.neighbors()' тогда? Кончик Python: не перебирайте 'range()', когда вы можете просто перебирать сам список: 'для узла в узлах:', 'print ('Соседи для {}'. Format (node))', 'for сосед в G.neighbors (node): ',' ​​print ('', neighse) '. –

ответ

0
nodes=['a','b','c','d','e','f','g'] 
G.add_edges_from([('a','f'),('a','d'),('a','b'),('a','e'),('b','g'),('b','e'),('b','c'),('c','b'),('c','d'),('d','a'),('d','c'),('e','b'),('e','a'),('f','a'),('g','b')]) 
nodlen=len(nodes) 
for i in range(nodlen): 
    all_items = G.neighbors(nodes[i]) 
    for one in all_items: 
     print one 
2

The Graph.neighbors() method возвращает трясины стандартный Python list объект. Просто проиндексируйте его:

neighbors = G.neighbors(nodes[i]) 
print('First neighbor', neighbors[0]) 

или переверните его, чтобы добраться до каждого отдельного элемента списка.

В Python вы обычно не генерируете индексы для доступа ко всем элементам в списке, вы просто зацикливаете на самом списке; for конструкции является Foreach loop:

nodes=['a','b','c','d','e','f','g'] 
G.add_edges_from([('a','f'),('a','d'),('a','b'),('a','e'),('b','g'),('b','e'),('b','c'),('c','b'),('c','d'),('d','a'),('d','c'),('e','b'),('e','a'),('f','a'),('g','b')]) 

for node in nodes: 
    print('Neighbors for', node) 
    for neighbor in G.neighbors(node): 
     print(' ', neighbor) 
    print() 
+0

Извините, martijn, я думаю, что мой вопрос был неправильным, на самом деле отдельным элементом я имею в виду ['e', 'b', 'f', 'd'] не ebf d .... вот так ... надеюсь, что у вас есть Это . Я хочу сравнить каждое из этих множеств с другим ... ie ['e', 'b', 'f', 'd'] сравнить это с остальной частью ['e', 'c', 'g », 'а'] [ 'B', 'd'] [ 'с', 'а'] [ 'B', 'а'] [ 'а'] [ 'B'] –

+0

@ akhilamahadevan: похоже, вы пытаетесь сделать что-то крайне неэффективное. Почему бы вам не объяснить (на ваш вопрос), что вы пытаетесь сделать? Вы можете перебрать оставшиеся узлы * снова * во вложенном цикле и получить соседи для каждого из этих других узлов для сравнения, но петли вложенности приводят к квадратичному исполнению, что означает * slow *. –

Смежные вопросы