繁体   English   中英

如何打印列表中元素的索引 - python

[英]How to print an index of element in a list - python

#将加载 2 个 arrays 的程序。 第一个数组的元素是坐标X。#第二个数组的元素是平面上一个点的坐标Y。#找到该点并打印最靠近起点的点的坐标索引,坐标 0,0。

import math

i = 0
X = [3,32,15,43,5,22,90,1]
Y = [3,32,15,43,5,22,90,1]
min = math.sqrt(X[0])**2 + math.sqrt(Y[0])**2
while i < len(X):
    U = math.sqrt(X[i])**2 + math.sqrt(Y[i])**2
    if U < min:
        min = U
    else:
        min = min
    i = i + 1

mindex = X.index(min)


print(min)
print(mindex)

所以基本上坐标应该是1,1,因为这是距离D = 2的nul点的最短距离。但是我如何也打印该元素1的索引。索引为7

编辑:在 python

这里是 go:

import math

X = [3, 32, 15, 43, 5, 22, 90, 1]
Y = [3, 32, 15, 43, 5, 22, 90, 1]

# calculate distances using list comprehension
distances = [math.sqrt(x) ** 2 + math.sqrt(y) ** 2 for x, y in zip(X, Y)]

# find minimal distance
min_distance = min(distances)

# find index of minimal index
min_distance_index = distances.index(min_distance)
print(min_distance, min_distance_index)  # Output: 2.0 7

只是提醒一下,你得到了错误的欧几里得距离公式。 如果它们都是正数,则您的公式归结为x + y ,否则会出现错误。 实际公式为math.sqrt(x ** 2 + y ** 2)

从您的问题的措辞听起来您只想打印索引,在这种情况下,以下内容就足够了

import math

X = [3,32,15,43,5,22,90,1]
Y = [3,32,15,43,5,22,90,1]

min_index = min(range(len(X)), key=lambda i: math.sqrt(X[i] ** 2 + Y[i] ** 2))
print(min_index)

超级简单,几乎没有不便。

>>> min(range(len(X)), key=lambda i: X[i] + Y[i])
7

(不知道你认为平方根可以达到什么效果,所以我删除了它。)

检查这个:

import math

i = 0
X = [3,32,15,43,5,22,90,1]
Y = [3,32,15,43,5,22,90,1]
min = math.sqrt(X[0])**2 + math.sqrt(Y[0])**2
idx = 0
while i < len(X):
    U = math.sqrt(X[i])**2 + math.sqrt(Y[i])**2
    if U < min:
        min = U
        idx = i
    i = i + 1

print(min)
print(idx)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM