用于lis中的索引

2024-06-26 10:08:46 发布

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

我正在努力找出如何将答案从减法简化到小数点后两位。输入和离开的两个列表被减去,这样我就可以得到一辆车从a点到B点所需的时间

Enter=[7.12,
       7.15,
       7.24,
       7.45,
       7.28,
       7.31,
       7.18,
       7.25,
       7.33,
       7.38]

Leave=[7.56,
       7.24,
       7.48,
       7.52,
       7.45,
       7.57,
       7.22,
       7.31,
       7.37,
       7.41]

Timestaken=[]

for enter_data, leave_data in zip(Enter, Leave):
    Timestaken.append(leave_data-enter_data)

print (Timestaken)

for index in Timestaken:
    Timestaken[index]="%.2f" % Timestaken[index]

print(Timestaken)

当我在空闲状态下运行时,会收到以下信息:

>>> 
[0.4399999999999995, 0.08999999999999986, 0.2400000000000002, 0.0699999999999994, 0.16999999999999993, 0.2600000000000007, 0.040000000000000036, 0.05999999999999961, 0.040000000000000036, 0.03000000000000025]
Traceback (most recent call last):
  File "M:\Task 2 Testing.py", line 46, in <module>
    Timestaken[index]="%.2f" % Timestaken[index]
TypeError: list indices must be integers, not float

我需要这方面的帮助:

for index in Timestaken:
    Timestaken[index]="%.2f" % Timestaken[index]

Tags: 答案in列表fordataindex时间print
3条回答

更具Python性:

>>> enter = [7.12, 7.15, 7.24, 7.45, 7.28, 7.31, 7.18, 7.25, 7.33, 7.38]
>>> leave = [7.56, 7.24, 7.48, 7.52, 7.45, 7.57, 7.22, 7.31, 7.37, 7.41]

>>> timestaken=["%.2f" % (leave_data-enter_data) for enter_data, leave_data in zip(enter, leave)]
>>> print (timestaken)
['0.44', '0.09', '0.24', '0.07', '0.17', '0.26', '0.04', '0.06', '0.04', '0.03']
>>> 

index值的假设是错误的

for index in Timestaken:

此代码将迭代Timestaken列表的所有值,而不是其索引:

In [9]: [index for index in Timestaken]
Out[9]:
[0.4399999999999995,
 0.08999999999999986,
 0.2400000000000002,
 0.0699999999999994,
 0.16999999999999993,
 0.2600000000000007,
 0.040000000000000036,
 0.05999999999999961,
 0.040000000000000036,
 0.03000000000000025]

如果您确实想要索引和值,请使用enumerate

In [10]: [(index,value) for index,value in enumerate(Timestaken)]
Out[10]:
[(0, 0.4399999999999995),
 (1, 0.08999999999999986),
 (2, 0.2400000000000002),
 (3, 0.0699999999999994),
 (4, 0.16999999999999993),
 (5, 0.2600000000000007),
 (6, 0.040000000000000036),
 (7, 0.05999999999999961),
 (8, 0.040000000000000036),
 (9, 0.03000000000000025)]

使用您的代码:不需要那些appends和重新格式化

times_taken = [leave_data-enter_data for enter_data, leave_data in zip(Enter, Leave)]


print (times_taken)

times_taken_float = ["{%.2f}".format(value) for value in times_taken]

print (times_taken_float)

我用列表理解来简化操作

这应该起作用:

for value in Timestaken:
    print("%.2f" % value)

相关问题 更多 >