Python 3.x 创建距离列表的列表理解

Python 3.x 创建距离列表的列表理解,python-3.x,list-comprehension,Python 3.x,List Comprehension,我必须创建一个列表,其中每个元素都是一个表单列表: [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,

我必须创建一个列表,其中每个元素都是一个表单列表: [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,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],[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循环的结果?

您的过程相当于:

dist = [[math.hypot(x[i] - x[j], y[i] - y[j]), i, j] for i in range(n) for j in range(i, n)]