![](/img/trans.png)
[英]How to take a list element as an index number to print another list in 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.