0
我要創建的列表,其中每個元素是形式的列表: [d,I,J]列表理解用於創建距離列表
其中i,j是兩個點的索引,d是歐幾里得距離它們之間。由於(I,J)之間的距離是一樣的之間的距離(J,I),我這樣做
dist=[]
for i in range(n):
for j in range(i,n):
dist.append([math.hypot(x[i]-x[j],y[i]-y[j]),i,j])
這給了我什麼,我想:
[0.0,0,0], [0.0,1,1],[1.0,0,2],[1.0,0,3],[1.0,1,2],[1.0,2,0],[1.0,2,1],[1.0 ,3,0],[1.4142135623730951,0,1],[1.4142135623730951,1,0]]
我使用列表解析嘗試,但制列表的列表的列表:
dist = [[[math.hypot(x[i]-x[j],y[i]-y[j]),i,j] for j in range(i,n)] for i in range(n)]
但它完全創建了其他內容: [[[0.0,0,0,0],[1.0,0,1],[1.0,0,2],[1.4142135623730951,0,3]],[[0.0,1, 1],[1.4142135623730951,1,2],[1.0,1,3]],[[0.0,2,2],[1.0,2,3]],[[0.0,3,3]]]
是否有一些緊湊的列表理解方法從顯式for循環中實現結果?