1
这应该是微不足道的。然而,我不觉得我的技巧是100%确定的。在Python中反向索引列表列表
我有一个列表(lol;)),捕获图形节点之间的边缘关系。假设我有一个指导的图,其中4个节点标记为0,1,2,3。边是{(0,2),(0,3),(1,0),(1,3),( 2,1)}等邻接LOL(称之为a
)是
a = [[2,3],[0,3],[1],[]]
我想找到发病笑了,即列出了指示哪些节点是入射在节点的列表。在这个例子中,发病率洛尔(称之为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解释器在没有它的情况下会发出语法错误。有没有更好的措辞措辞呢?
我基本上想避免循环。如果我错了,请纠正我,但我相信列表理解和其他内置函数可以比使用循环更有效。 – Nik
事实上,Python经常会伴随一些与列表理解相关的内部优化,但您也必须考虑代码的可读性。另一方面,Python的关键特性不包括性能,所以这一切都取决于代码的用途。 – kaspersky