我正在尝试获取数字的余弦逆。但它显示了一条错误消息
for i in S:
nr=[((i[0]*p)+(i[1]*q))/(math.sqrt(i[0]**2+i[1]**2)*math.sqrt(p**2+q**2)) for (p,q) in P]
print(nr)
dist=math.acos(nr)
最后一条语句抛出错误“必须是实数,而不是列表” 但是,nr不是列表。我不确定是什么错误
请求帮助以了解这一点。预先感谢
答案 0 :(得分:1)
nr=[((i[0]*p)+(i[1]*q))/(math.sqrt(i[0]**2+i[1]**2)*math.sqrt(p**2+q**2)) for (p,q) in P]
这是一个列表理解,表示nr是一个列表。抱怨是因为您无法执行列表的Acos。
正如您在评论中所说,P是单个元素列表,因此您的nr列表仅包含一个元素,但它仍然是一个列表。尝试做math.acos(nr[0])