我有一个十进制定点数列表:
latitude = Places.query.with_entities(Places.latitude).all()
result = []
for i in range(len(latitude)):
result.append(latitude[i][0])
print result
纬度输出为this 我想把它们映射到Radians。所以,我这样做了:
lat_ = map(lambda i: radians(i), result)
但是需要错误TypeError: a float
我想知道执行此操作的正确方法是什么。 `
修改
现在结果如下:
[28.633, 29.333,...]
错误是:
TypeError: float() argument must be a string or a number
答案 0 :(得分:2)
试试这个:
rads = [x['latitude'] for x in result]
_lat = map(lambda i: radians(i), rads)
答案 1 :(得分:1)
问题是数学模块的弧度函数需要一个float类型的输入,而不是Decimal类型的输入。您必须先将值转换为float:
lat_ = map(lambda i: radians(float(i)), result)
答案 2 :(得分:1)
from decimal import *
from math import radians
result = [Decimal('77.216700'), Decimal('77.250000'), Decimal('77.216700'), Decimal('77.216700'), Decimal('77.200000'), Decimal('77.216700')]
lat_ = map(lambda i: radians(float(i)), result)
# [1.3476856525247056, 1.3482668471656196, 1.3476856525247056,
# 1.3476856525247056, 1.3473941825396225, 1.3476856525247056]