我想将列表中的浮点数舍入到python的楼层,我尝试math.floor([i])
,错误是:a float is required
我也尝试了math.trunc([i])
,我收到了这个错误: AttributeEror_trunc
。
我找不到任何合适的代码来解决这个问题。任何帮助将不胜感激!
这是我到目前为止的代码:
with open ("G:\Speed\\december.sorted.movement.Sample.txt", 'r') as f:
firs_line = f.readline()
split=firs_line.split ("\t")
Speed = [r.split()[5] for r in f]
Speedf=[]
for item in Speed:
Speedf.append(float(item))
denominator= 8677.8
i = [x/denominator for x in Speedf]
import math
v= math.floor([i])
#print v [:5]
答案 0 :(得分:3)
math.floor
需要浮点值。但你似乎正在传递列表列表。
您可以使用列表理解:
v = [math.floor(float(x)) for x in i]
这应该从i
获得一个舍入值列表。
您还可以使用map
功能:
list(map(lambda x: math.floor(float(x)), i))
答案 1 :(得分:0)
math.floor()
只接受单个浮点值参数(或具有__floor__()
方法的对象)。要将它(或另一个可调用的单个参数)应用于整个列表,您可以使用list comprehension s,如下所示:
import math
with open ('G:\\Speeds\\december.sorted.movement.Sample.txt', 'r') as f:
first_line = f.readline()
split = first_line.split('\t')
Speeds = [float(line.split()[5]) for line in f]
denominator = 8677.8
v = [math.floor(sp/denominator) for sp in Speeds]
print v[:5]
如果你不需要其他任何Speeds
列表,你甚至可以将两个列表推导组合成一个并做这样的事情(虽然它的可读性较差):
with open ('G:\\Speeds\\december.sorted.movement.Sample.txt', 'r') as f:
first_line = f.readline()
split = first_line.split('\t')
denominator = 8677.8
v = [math.floor(float(line.split()[5])/denominator) for line in f]
print v[:5]