这应该是微不足道的。然而,我对我的把戏并不是 100% 确定的。
我有一个列表列表 (lol ;)),它捕获了图形节点之间的边缘关系。假设我有一个有向图,其中有 4 个节点标记为 0、1、2、3。边是 {(0,2),(0,3),(1,0),(1,3),(2, 1)} 所以邻接lol(叫它a
)是
a = [[2,3],[0,3],[1],[]]
我现在想找到发生率lol,即一个列表列表,指示哪些节点发生在哪些节点上。对于这个例子,发生率lol(称之为b
)将是:
[[1], [2], [0], [0, 1]]
我尝试了以下代码:
b = [[],[],[],[]]
[b[j].append(i) for i,x in enumerate(a) for j in x]
这给了我正确的关联矩阵b
。
第二步虽然可行,但理想情况下应该是b[j].append(i) for i,x in enumerate(a) for j in x
,没有开[
闭]
。但是没有它,Python 解释器会发出语法错误。有没有更好的表达方式?