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