在Python中减去列表中的浮点值

2024-09-28 17:18:01 发布

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

我试图得到它,所以我的列表从零开始,而不是它最初开始的大数字。为此,我必须从列表中的所有其他值中减去初始值。列表中的数字是浮点数和相当大的数字。我需要从其他时间中减去初始时间。我尝试了以下几点:

for index, time in enumerate(STARTTIME_MAX1):
    time = time/60
    #if time > 0:
    #    time = time - time[0]
    time = time - time[0]
    #time[:] = [time - time[0] for time in STARTTIME_MAX1]
    STARTTIME_MAX1[index] = time

我也试过这样做:

for time in STARTTIME_MAX1:
    time = time/60
    time = time-time[0]
    print(time)
print(STARTTIME_MAX1)

并尝试了以下方法:

STARTTIME_MIN = [((i/60)-i[0]) for i in STARTTIME_MAX1]

但是每次我得到一个错误:TypeError: 'float' object is not subscriptable

我需要将这些值保持为浮点值,以便它们更精确。STARTTIME_MAX1只是一个测量开始时间的列表,我需要从列表中的所有值中减去第一个STARTTIME值,以便它在零的初始时间开始,并从零开始继续。 任何帮助都将不胜感激


Tags: 方法in列表forindexiftime时间
3条回答

time是代码中的浮点,它是STARTTIME_MAX1中的元素之一。而不是使用time[0],您可能需要STARTTIME_MAX1[0]

请不要使用time作为变量名,如果以后尝试使用datetime.time,可能会给您带来麻烦

为了简单起见,假设您有这样一个列表:

a = [15, 16, 17, 19]

你要减去第一个值,15:

a = [0, 1, 2, 4]

要获得第一个元素,可以使用a[0],然后可以从每个元素(包括它本身)中减去它。在这里,我将使用一个完整的切片作业理解

initial = a[0]
a[:] = [x-initial for x in a]
# > a = [0, 1, 2, 4]

在python中进行除法时,会得到一个浮点输出: 在这一行代码和我的示例中:

time = time/60

10/2
>> 5.0

要解决此问题,您可以:

10//2
>> 5

//只返回小数点之前的部分。 或者你可以做B:

int(10/2)
>> 5

int()将浮点或字符串形式int转换为整数

相关问题 更多 >