如何从一个列表中获取一个值并将其应用于另一个列表中的所有值

2024-04-25 00:44:56 发布

您现在位置:Python中文网/ 问答频道 /正文

由于某些原因,我无法找出代码不起作用的原因。 我想计算列表中每个值和所有其他值之间的距离。 比如说我从列表中取第一个索引rar[1]=(29276312) 我想知道它到自身的距离(即0)和列表中的所有其他值。你知道吗

这就是为什么我要做一个循环,在这个循环中,第一个点在第二个点的第二个循环完成动作之前是不变的。最后,我想得到一个列表,其中子列表包含每个值到另一个值的距离。像这样:

距离=[[0,1,2,3,4],[0,1,2,3,4],[0,1,2,3,4],[0,1,2,3,4]]

其中0是点本身与点本身之间的距离。 1是列表中第一个点和第一个值之间的距离 2是列表中第一个点和第二个值之间的距离。。。。你知道吗

事先非常感谢。你知道吗

rar= [(2925, 6597), (2927, 6312), (2934, 6545), (2938, 7412), (2941, 6456)]

templist=[]
distance=[]
for i in range(len(rar)) :
    firstpoint = rar[i]
    for q in range(len(rar):
       secpoint = rar[q]
       zipz = np.array(list(zip(firstpoint,secpoint)))
       nan = round(np.linalg.norm(zipz))
       templist.append(nan)
    distance.append(templist)

Tags: in距离列表forlennprange原因
1条回答
网友
1楼 · 发布于 2024-04-25 00:44:56

不太清楚如何计算两个元素之间的距离,但我假设差的范数应该可以。下面是一个小示例,说明如何使用列表表达式保持代码简单和最小化:

import numpy as np

rar      = [(2925, 6597), (2927, 6312), (2934, 6545), (2938, 7412), (2941, 6456)]
distance = [[round(np.linalg.norm(np.array(a)-np.array(b))) for b in rar] for a in rar]
print(distance)

输出:

[[0.0, 285.0, 53.0, 815.0, 142.0],
 [285.0, 0.0, 233.0, 1100.0, 145.0],
 [53.0, 233.0, 0.0, 867.0, 89.0],
 [815.0, 1100.0, 867.0, 0.0, 956.0],
 [142.0, 145.0, 89.0, 956.0, 0.0]]

相关问题 更多 >