2015-10-14 66 views
0

我有一個圖的鄰接列表的數組。我想找到度數爲1的頂點。例如,如果a=[[0,1,2],[1],[2],[1,2]]那麼我想要索引1,2,因爲a[1],a[2]有單個元素。查找單個元素的子陣列的索引

+0

如果您同意此準則的概念[度](https://en.wikipedia .org/wiki/Degree_(graph_theory))我想你想返回頂點0和3,因爲1和2有3級度。請解釋你的意思是「有單個元素」 – igon

回答

1

如果你只有一個元素尋找sublists,試試這個

[i for i in a if len(i) == 1] 

輸出:

[1,[2]

其所謂list comprehension我們如果原始列表中的子列表只包含一個元素,則創建新列表

編輯:由於上述方法創建子表的新表,我們需要壓扁名單

list(b for i in a if len(i) == 1 for b in i) 

[1,2]

+0

@downvoter。請評論 – sam

+0

我得到的輸出爲[[1],[2]]。我怎麼才能得到[1,2]?那是我不希望他們再次分組數組。 – pikachuchameleon

+0

@AshokVardhan檢查編輯。此外,這將從子列表中提取元素,而不是索引。請澄清你想要的輸出是什麼? 'elements' or'indices' – sam

0

我建議enumerate()功能:

a = [[0,1,2],[1],[2],[1,2]] 
indices = [i for i, e in enumerate(a) if len(e) == 1] 
print(indices)