2014-12-19 57 views
-1

[(1,2),(2,3),(3,4),(3,5),(6,8),(10,1)] ? - >[1, 2, 3, 4, 5, 6, 8, 10]如何在python改變這個(邊緣到頂點)

第一行是在圖中的邊。

我想要一個包含不同圖形頂點的數組。

如何在python改變呢?

+0

你能解釋一下你是怎麼頂點列表'[1,2,3,4,5 ,6,8,10]'? – 2014-12-19 05:53:11

回答

0
list1=[(1,2),(2,3),(3,4),(3,5),(6,8),(10,1)] 
list2=[] 
for i in list1: 
    for x in i: 
     if x not in list2: 
      list2.append(x) 
print (list2) 

輸出:

>>> 
[1, 2, 3, 4, 5, 6, 8, 10] 
>>> 
1

除了已經很好的答案,我們可以使用zip功能拆包名單

>>> l = [(1,2),(2,3),(3,4),(3,5),(6,8),(10,1)] 
>>> list(set(zip(*l)[0]+zip(*l)[1])) 
[1, 2, 3, 4, 5, 6, 8, 10] 
>>> 
0
x=[(1,2),(2,3),(3,4),(3,5),(6,8),(10,1)] 
z=list(set([k[0] for k in x]+[k[1] for k in x])) 

你可以試試這個。

0
>>> import numpy as np 
>>> edges = np.array([(1,2),(2,3),(3,4),(3,5),(6,8),(10,1)]) 
>>> np.unique(edges) 
array([ 1, 2, 3, 4, 5, 6, 8, 10]) 
0

試試這個:

>>> import itertools 
>>> sorted(set(itertools.chain.from_iterable([(1,2),(2,3),(3,4),(3,5),(6,8),(10,1)]))) 
>>> [1, 2, 3, 4, 5, 6, 8, 10] 
0
x = [(1,2),(2,3),(3,4),(3,5),(6,8),(10,1)] 
y = list(set(sum(x,()))) 
+0

y爲輸出([1,2,3,4,5,6,8,10]) – seudo 2014-12-19 07:26:30

2

這裏有一個簡單的方法:

>>> edges = [(1,2),(2,3),(3,4),(3,5),(6,8),(10,1)] 
>>> set().union(*edges) 
{1, 2, 3, 4, 5, 6, 8, 10} 
相關問題