【发布时间】:2017-12-15 07:33:52
【问题描述】:
所以我有一个这样的列表:
kesto = ['3m 24s', '45s', '1h 2m 40s']
我需要找到这些的平均值、最小值和最大值。 我试过了:
max_value = max(kesto)
min_value = min(kesto)
avg_value = sum(kesto)/len(kesto)
但当然它不起作用,因为这些不是数字。他们后面有“m”和“s”。
编辑: 此代码工作正常,但它只返回它获得的第一个值。 例如,如果有一个“h”和一个“m”,它只返回“h” 所以 1h 20min 和 1h 15min 都是“3600”。
def parse_time(s):
s = s.split()
total = 0
for cl in s:
if cl[-1] == 'd':
total += int(cl[:-1]) * 60 * 60 * 24
if cl[-1] == 'h':
total += int(cl[:-1]) * 60 * 60
if cl[-1] == 'm':
total += int(cl[:-1]) * 60
if cl[-1] == 's':
total += int(cl[:-1])
return total
kesto2 = [parse_time(s) for s in kesto]
【问题讨论】:
-
3m 24s = 204将它们转换为 int -
是的,我知道我必须将它们转换为 int 但如何?
标签: python list max average min