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')