四舍五入的浮点数列表?
Round-to-floor a list of float numbers?
我想将列表中的浮点数四舍五入到 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]
math.floor
需要一个浮点值。但是您似乎正在传递一个列表列表。
您可以使用列表理解:
v = [math.floor(float(x)) for x in i]
那应该从 i
中得到一个舍入值列表。
您还可以使用 map
函数:
list(map(lambda x: math.floor(float(x)), i))
math.floor()
only accepts a single float value argument (or an object with a __floor__()
method). To apply it (or another callable taking a single argument) to a whole list you can use list comprehensions如下图:
import math
with open('december.sorted.movement.Sample.txt', 'r') as f:
first_line = next(f)
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('december.sorted.movement.Sample.txt', 'r') as f:
first_line = next(f)
split = first_line.split('\t')
denominator = 8677.8
v = [math.floor(float(line.split()[5] )/ denominator) for line in f]
print(v[:5])
我想将列表中的浮点数四舍五入到 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]
math.floor
需要一个浮点值。但是您似乎正在传递一个列表列表。
您可以使用列表理解:
v = [math.floor(float(x)) for x in i]
那应该从 i
中得到一个舍入值列表。
您还可以使用 map
函数:
list(map(lambda x: math.floor(float(x)), i))
math.floor()
only accepts a single float value argument (or an object with a __floor__()
method). To apply it (or another callable taking a single argument) to a whole list you can use list comprehensions如下图:
import math
with open('december.sorted.movement.Sample.txt', 'r') as f:
first_line = next(f)
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('december.sorted.movement.Sample.txt', 'r') as f:
first_line = next(f)
split = first_line.split('\t')
denominator = 8677.8
v = [math.floor(float(line.split()[5] )/ denominator) for line in f]
print(v[:5])