当前位置: 首页 > 知识库问答 >
问题:

在二维列表上编制索引和打印正确值时遇到问题

子车安和
2023-03-14

我有一个包含x,y对的简单二维列表。我正在制作一个程序,以找到两组点之间的最短距离。

“值”列表包含了所有的距离,我很确定它们是正确的距离。

我想打印出形成最小距离的两点。很明显,打印出最小距离是非常容易的,但是打印出这两点给我带来了麻烦。

我需要跟踪哪组点正在产生哪组距离。

我想我可能必须重新编写这段代码,重新开始,以实现我想要的。然而,用我所拥有的东西是否能达到这样的效果?如果没有,我该怎么做?如何跟踪正在使用的索引?

代码:

multiD = [[1,3],
[-1,-1],
[1,1],
[2,0.5],
[2,-1],
[3,3],
[4,2],
[4,-0.5]]

def distance(x1, y1, x2, y2):
    distance = ( (((x2 - x1) * (x2 - x1)) + ((y2 - y1) * (y2 - y1))) ** 0.5)
    return distance

values = []
for [x1,y1] in multiD:
    for [x2,y2] in multiD:
        if [x1,y1] != [x2,y2]:
            diff = distance(x1,y1,x2,y2)
            values.append(diff)

共有1个答案

汤飞
2023-03-14
from itertools import combinations

points = [
    [ 1,   3],   [-1, -1],   [ 1,  1],
    [ 2, 0.5],   [ 2, -1],   [ 3,  3],
    [ 4,   2],   [ 4, -0.5]
]

def dist(pair):
    (x1, y1), (x2, y2) = pair
    return ((x2 - x1) ** 2 + (y2 - y1) ** 2) ** 0.5

def main():
    pairs = combinations(points, 2)
    closest = min(pairs, key=dist)
    print("The closest pair is {} at {}.".format(closest, dist(closest)))

if __name__=="__main_":
    main()

生产

The closest pair is ([1, 1], [2, 0.5]) at 1.118033988749895.
 类似资料:
  • 好的,我已经成功地将一个列表变成了一个二维数组。唯一的问题是输出只索引一次,所以基本上,如果我想将每个列表中的10个元素添加到一个二维数组中,那么这个二维数组将只有一个包含“n”个元素的索引。 例如 我愿意 相反,它正在返回: 我接受了以下建议:将ArrayList转换为包含不同长度数组的2D数组 这是我的代码: 我正在使用数据提供者(DataProviders)和TestNG,它们需要返回一个二

  • 问题内容: 我正在读取文件并将其存储在t1中。如何访问t1中的元素?当我尝试打印时,我得到的是地址而不是值。还有和之间的区别是什么? 输出: 问题答案: String []是一个字符串数组,因此其未如您所愿打印的原因,请尝试: 或更简洁: 或者更好:

  • 我正在尝试读取文件的每一行,它应该是以下格式:- 然后将该行拆分为各个字段,并进行任何必要的转换(从字符串到int或double)。然后,我将使用静态工厂方法创建<code>salaredemployee/HourlyEmployee。 我想循环员工列表,并在控制台上打印出一个表格,列出每个员工的姓名、类型、工时和总工资。每个列都需要对齐,字符串-左对齐,数字-右对齐。所有货币列都应该有2个美分位

  • 我试着运行这个: 但是得到这个错误: 回溯(最后一次调用): 文件“C:\Users\Shakh\Desktop\Hello3.py”,第4行,在 打印(“Hallo”,sys.argv[1]) 索引器:列表索引超出范围

  • 我试着做一个Loto游戏,我必须生成一张随机的卡,在第一个collum数字从1-9,第二个10-19一直到90。这张牌的另一个规则是,每行的随机位置上只能有5个数字,这就是我遇到的麻烦。 我从这个开始在每个collum中添加数字: 然后在数组的每一行的一个数字位置上放5个数字我试过这样做: 第三个也一样。 输出: 0 18 0 0 46 0 61 72 88 0 18 0 31 0 55 0 0

  • 我正在尝试从CSV文件导入数据。我对导入过程没有任何问题。但是,当我将一个导入的数组从CSV文件传递到另一个类中的另一个方法时,我无法从数组中获取和打印值。我得到了以下打印:[1,2.0,[[Ljava.lang.字符串;@1e81f4dc]。“1”和“2”是导入值,没有问题。 我真正的麻烦是获取并打印“[Ljava.lang.String;@1e81f4dc]”中的值。 如果您能帮助了解如何获取