[(1,2),(2,3),(3,4),(3,5),(6,8),(10,1)]
? - >[1, 2, 3, 4, 5, 6, 8, 10]
如何在python改變這個(邊緣到頂點)
第一行是在圖中的邊。
我想要一個包含不同圖形頂點的數組。
如何在python改變呢?
[(1,2),(2,3),(3,4),(3,5),(6,8),(10,1)]
? - >[1, 2, 3, 4, 5, 6, 8, 10]
如何在python改變這個(邊緣到頂點)
第一行是在圖中的邊。
我想要一個包含不同圖形頂點的數組。
如何在python改變呢?
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]
>>>
除了已經很好的答案,我們可以使用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]
>>>
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]))
你可以試試這個。
>>> 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])
試試這個:
>>> 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]
x = [(1,2),(2,3),(3,4),(3,5),(6,8),(10,1)]
y = list(set(sum(x,())))
y爲輸出([1,2,3,4,5,6,8,10]) – seudo 2014-12-19 07:26:30
這裏有一個簡單的方法:
>>> edges = [(1,2),(2,3),(3,4),(3,5),(6,8),(10,1)]
>>> set().union(*edges)
{1, 2, 3, 4, 5, 6, 8, 10}
你能解釋一下你是怎麼頂點列表'[1,2,3,4,5 ,6,8,10]'? – 2014-12-19 05:53:11