Python 如何从字符串列表中提取整数以创建公式?
我如何从列表中提取分和秒?我希望能够创建一个公式来计算每小时英里数。迭代时间列表,从中提取分钟和秒部分,并将其转换为整数,以便进一步处理Python 如何从字符串列表中提取整数以创建公式?,python,string,list,methods,Python,String,List,Methods,我如何从列表中提取分和秒?我希望能够创建一个公式来计算每小时英里数。迭代时间列表,从中提取分钟和秒部分,并将其转换为整数,以便进一步处理 timeList = ['7m:13s', '11m:29s', '16m:48s', '3m:26s', '120m:0s'] 解决方案 您可以使用str'7m:13s'。split':'对这两个部分进行切片,然后分别处理分钟和秒部分,如下所示 json库允许您缩进字典打印并使其更易于读取输出 但是,也可以使用pandas.DataFrame将输出显示为表
timeList = ['7m:13s', '11m:29s', '16m:48s', '3m:26s', '120m:0s']
解决方案
您可以使用str'7m:13s'。split':'对这两个部分进行切片,然后分别处理分钟和秒部分,如下所示
json库允许您缩进字典打印并使其更易于读取输出
但是,也可以使用pandas.DataFrame将输出显示为表
既然你们提到了计算速度,让我做一些以英里为单位的行驶距离的虚拟数据,并用它来计算以英里/小时为单位的速度
timeList = ['7m:13s', '11m:29s', '16m:48s', '3m:26s', '120m:0s']
for element in timeList:
min = int(str(element).split(":")[0].split("m")[0])
sec = int(str(element).split(":")[1].split("s")[0])
print(min,sec)
下面的解决方案以小时为单位计算时间,并计算速度
密码
导入json
作为pd进口熊猫
时间列表=['7m:13s','11m:29s','16m:48s','3m:26s','120m:0s']
以英里为单位的虚拟距离数据
距离=['0.5','1.2','3.8','10.0','100.0']
我们将在一个小时内节省时间跨度
词典后处理
时间跨度=dict
对于i,ts,枚举参数列表中的距离,距离:
tmin,tsec=ts.split':'
时间跨度。更新{i:{'distance':floatdistance,
“timespan”:ts,
“分钟”:inttmin[:-1],
“秒”:inttsec[:-1],
}}
如有必要,打印字典注释
printjson.dumpstime_跨度,缩进=2
打印数据帧:作为表
df=pd.DataFrametime\u span.T
以小时为单位计算经过的时间
df['time']=df['minutes']/60+df['seconds']/60*60
计算速度:以英里/小时为单位的距离/时间
df['speed']=df['distance']/df['time']
printdf
数据帧:
如果你想根据时间计算速度,你需要一个距离。如果希望以英里/小时为单位,则需要将这些时间转换为小时数或小时分数。这可以在列表中完成:
distance timespan minutes seconds time speed
0 0.5 7m:13s 7 13 0.120278 4.15704
1 1.2 11m:29s 11 29 0.191389 6.26996
2 3.8 16m:48s 16 48 0.28 13.5714
3 10 3m:26s 3 26 0.0572222 174.757
4 100 120m:0s 120 0 2 50
如果您的距离在匹配列表中,您可以使用zip获得每个条目的速度:
timeList = ['7m:13s', '11m:29s', '16m:48s', '3m:26s', '120m:0s']
# converting to hours
hours = [(m*60+s)/3600 for ms in timeList for m,s in [map(int,ms[:-1].split("m:"))]]
#computing speeds:
distance = 1 # mile
mph = [distance/time for time in hours]
print(mph)
# [8.314087759815243, 5.2249637155297535, 3.571428571428571, 17.475728155339805, 0.5]
您可以将两者合并为一条线,但这条线很难看,也很难维护:
miles = [ 10, 5, 8, 9 ]
mph = [distance/time for distance,time in zip(miles,hours)]
# [83.14087759815243, 26.124818577648767, 28.57142857142857, 157.28155339805826]
从每个项目中删除m和s,然后在上拆分:
输出:
timeList = ['7m:13s', '11m:29s', '16m:48s', '3m:26s', '120m:0s']
for item in timeList:
minutes, seconds = item.replace('m', '').replace('s', '').split(':')
minutes, seconds = int(minutes), int(seconds)
print(minutes, seconds)
更新:
如果不清楚的话,我完全是python的初学者
我想用列表理解法,把我所有的方法和作业放在一行,但这让我很难理解。我的最终代码一步一步地完成了这个过程。也许不是最有效的方法,但我能找到它
我使用切片、剥离和拆分从字符串中提取数字,然后将每个数字转换为所需的单位
7 13
11 29
16 48
3 26
120 0
输出:
distanceList = [0.04, 0.05, 0.91, 0.16, 18]
timeList = ['7m:13s', '11m:29s', '16m:48s', '3m:26s', '120m:0s']
zipList = zip(distanceList, timeList)
for i in zipList:
distance = i[0]
time = i[1]
numbers = time.split("m:")
minute = numbers[0]
sec = numbers[1].strip("s")
hoursmin = (float(minute) / 60)
hourssec = (float(sec) / 3600)
hours = (hoursmin + hourssec)
mph = (distance / hours)
print("Distance: ", distance, "Time: ", time, "Speed: ", round(mph, 2), "miles/hr")
你想从列表中得到什么样的最终结果,你只是想得到元素0的713吗?我正试图从这个时间列表和距离列表中创建一个zip列表,如何在同一个循环中添加这个公式?Ex distance list distanceList=[0.04,0.05,0.91,0.16,18]
7 13
11 29
16 48
3 26
120 0
distanceList = [0.04, 0.05, 0.91, 0.16, 18]
timeList = ['7m:13s', '11m:29s', '16m:48s', '3m:26s', '120m:0s']
zipList = zip(distanceList, timeList)
for i in zipList:
distance = i[0]
time = i[1]
numbers = time.split("m:")
minute = numbers[0]
sec = numbers[1].strip("s")
hoursmin = (float(minute) / 60)
hourssec = (float(sec) / 3600)
hours = (hoursmin + hourssec)
mph = (distance / hours)
print("Distance: ", distance, "Time: ", time, "Speed: ", round(mph, 2), "miles/hr")
('Distance: ', 0.04, 'Time: ', '7m:13s', 'Speed: ', 0.33, 'miles/hr')
('Distance: ', 0.05, 'Time: ', '11m:29s', 'Speed: ', 0.26, 'miles/hr')
('Distance: ', 0.91, 'Time: ', '16m:48s', 'Speed: ', 3.25, 'miles/hr')
('Distance: ', 0.16, 'Time: ', '3m:26s', 'Speed: ', 2.8, 'miles/hr')
('Distance: ', 18, 'Time: ', '120m:0s', 'Speed: ', 9.0, 'miles/hr')