2016-08-13 2 views
0

for 루프의 각 싱글 톤에 값을 할당하는 중복과 실패를 처리하려고합니다. 먼저중복을 피하고 for 루프의 각 싱글 톤에 값을 할당하기

, 나는 그것을 연결 노드에 하나 개의 노드에서 가장자리를 만들 :

ti = "D" #node from 
lst = ["A", "B", "C"] #nodes to 

packaged = [(ti, l) for l in lst] # a list of edges (from - to) 

l_lst = len(lst) ## length of lst, *i.e.* degree of ti 

weight = 1/float(l_lst) # edge weight, normalized by length of lst 

for pair in packaged: 
    print (packged, weight) 

이 내가 달성하고자하는 어떤 그러나

([('D', 'A'), ('D', 'B'), ('D', 'C')], 0.3333333333333333) 
([('D', 'A'), ('D', 'B'), ('D', 'C')], 0.3333333333333333) 
([('D', 'A'), ('D', 'B'), ('D', 'C')], 0.3333333333333333) 

, 나에게주는 것은 :

('D', 'A'), 0.3333333333333333 
('D', 'B'), 0.3333333333333333 
('D', 'C'), 0.3333333333333333 

중복을 피하고 각 노드 쌍 (에지)에 가중치를 할당하는 방법은 무엇입니까?

감사합니다.

+2

음 : '인쇄 (한 쌍, 무게)'? –

+1

당신은 각 반복마다'packaged'를 인쇄하고 있습니다 - 당신은'pair'를 대신 인쇄하고 있습니까? –

+0

하하. 감사!! 나는 혼란 스러웠다. – achimneyswallow

답변

3

는 당신이 필요로하는 것은 이것이다 :

ti = "D" #node from 
lst = ["A", "B", "C"] #nodes to 

packaged = [(ti, l) for l in lst] # a list of edges (from - to) 

l_lst = len(lst) ## length of lst, *i.e.* degree of ti 

weight = 1/float(l_lst) # edge weight, normalized by length of lst 

for pair in packaged: 
    print (pair, weight) 

에서 루프를 사용 pair 대신 packaged

+0

감사합니다. 나는 그것이 너무 일찍 일어 났기 때문에 그것이라고 생각한다. – achimneyswallow

+0

Haha ... 그 벌금. – dazzieta

3

에 대한 간단한 수정 :

for pair in packaged: 
    print (pair, weight) 
관련 문제