Roundtofloor浮点数列表?

2024-10-01 09:41:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在python中将列表中的浮点数舍入到floor,我尝试了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]

Tags: 代码infor错误linemathfloatitem
2条回答

^{}需要浮点值。但你似乎在传递一个列表。在

您可以使用列表理解:

v = [math.floor(float(x)) for x in i]

它应该从i获得一个舍入值列表。在

您还可以使用map函数:

^{pr2}$

^{}只接受单个浮点值参数(或具有__floor__()方法的对象)。要将其应用于整个列表(或使用单个参数的另一个callable),可以使用list comprehensions,如下所示:

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列表来做其他事情,您甚至可以将这两个列表理解合并为一个,并执行如下操作(尽管它的可读性较差):

^{pr2}$

相关问题 更多 >