类型错误:必须为实数,而不是列表

时间:2019-07-30 18:26:16

标签: python-3.x list trigonometry

我正在尝试获取数字的余弦逆。但它显示了一条错误消息

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不是列表。我不确定是什么错误

请求帮助以了解这一点。预先感谢

1 个答案:

答案 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])