繁体   English   中英

如何在 python 中分隔小时列表:分钟:秒?

[英]How to seperate list of hours:minutes:seconds in python?

你好,我想分开一个看起来像这样的列表:

04:05:43.0
04:05:44.0
04:05:45.0
04:05:46.0
04:05:47.0
04:05:48.0
04:05:49.0
04:05:50.0
04:05:51.0
04:05:52.0
04:05:53.0
04:05:54.0
04:05:55.0
04:05:56.0
04:05:57.0
04:05:58.0
04:05:59.0
04:06:00.0
04:06:01.0
04:06:02.0
04:06:03.0
04:06:08.0

到 3 个带有小时/分钟和秒的单独列表

预期结果:

hrs = [4, 4, 4, 4, 4, 4, ......]
mins = [5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,.... ]
secs = [1, 2, 3, 4, 5, 6,.....]

这段代码正是你想要的!

list_ = [
    '04:05:43.0',
    '04:05:44.0',
    '04:05:45.0'
]

# create 3 different lists, seperating hrs mins and secs
hrs = []
mins = []
secs = []

# loop through the list and split the strings into 3 different lists
for i in list_:
    hrs.append(int(i.split(':')[0]))
    mins.append(int(i.split(':')[1]))
    secs.append(int(i.split(':')[2].split('.')[0]))

您可以在生成器表达式中使用zipstr.split

# the output will be tuples
hrs, mins, secs = zip(*((int(float(x)) for x in s.split(':')) for s in data))

或者对于列表而不是元组:

hrs, mins, secs = map(list, zip(*((int(float(x)) for x in s.split(':'))
                                  for s in data)))

Output:

# hrs
[4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]

# mins
[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6]

# secs
[43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 0, 1, 2, 3, 8]

当数据是固定格式时很容易

lst = [
'04:05:43.0',
'04:05:44.0',
'04:05:45.0',
'04:05:46.0',
'04:05:47.0',
'04:05:48.0',
'04:05:49.0',
'04:05:50.0',
'04:05:51.0',
'04:05:52.0',
'04:05:53.0',
'04:05:54.0',
'04:05:55.0',
'04:05:56.0',
'04:05:57.0',
'04:05:58.0',
'04:05:59.0',
'04:06:00.0',
'04:06:01.0',
'04:06:02.0',
'04:06:03.0',
'04:06:08.0',
]
hrs  = [int(i[0:2]) for i in lst]
mins = [int(i[3:5]) for i in lst]
secs = [int(i[6:8]) for i in lst]
print( "hrs =", hrs)
print( "min =", mins)
print( "secs =", secs)

Output:

hrs= [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4]
min= [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6]
secs= [43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 0, 1, 2, 3, 8]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM