对于列表中的索引
For index in list
我正在努力寻找如何将减法的答案简化为小数点后两位。将 Enter 和 Leave 这两个列表相减,这样我就可以得到汽车从 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]
这应该有效:
for value in Timestaken:
print("%.2f" % value)
你对 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 index in Timestaken:
Timestaken[index]="%.2f" % Timestaken[index]
您使用的是 Timestaken 列表中的值,而不是这些值的索引
你会想要像下面这样的东西
for index in xrange(len(Timestaken)):
Timestaken[index]="%.2f" % Timestaken[index]
此方法适用于 python 2.x,如果您使用 python 3.x,请使用 range
而不是 xrange
其中 xrange(len(Timestaken))
returns 一个产生 0, 1, ... len(Timestaken)-1
的生成器
更多 pythonic:
>>> 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']
>>>
我正在努力寻找如何将减法的答案简化为小数点后两位。将 Enter 和 Leave 这两个列表相减,这样我就可以得到汽车从 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]
这应该有效:
for value in Timestaken:
print("%.2f" % value)
你对 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 index in Timestaken:
Timestaken[index]="%.2f" % Timestaken[index]
您使用的是 Timestaken 列表中的值,而不是这些值的索引
你会想要像下面这样的东西
for index in xrange(len(Timestaken)):
Timestaken[index]="%.2f" % Timestaken[index]
此方法适用于 python 2.x,如果您使用 python 3.x,请使用 range
而不是 xrange
其中 xrange(len(Timestaken))
returns 一个产生 0, 1, ... len(Timestaken)-1
更多 pythonic:
>>> 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']
>>>