我正在尝试处理复制以及为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
如何避免重复并为每对节点(边缘)分配权重?
谢谢!
答案 0 :(得分: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)
for for循环使用pair
代替packaged
答案 1 :(得分:3)
一个简单的解决方法:
for pair in packaged:
print (pair, weight)