Python 生成一个每隔 5 分钟的时间序列,能简化下吗?

2017-07-09 09:35:29 +08:00
 svsky
如下:
for x in range(0,24):
if len(str(x)) == 1:
x = str(0)+str(x)
for y in range(0,60,5):
if len(str(y)) == 1:
y = str(0)+str(y)
print(str(x)+":"+str(y))
8004 次点击
所在节点    Python
14 条回复
GTim
2017-07-09 09:48:04 +08:00
```python
s = ["{:0>2}:{:0>2}".format(i/60,i%60) for i in range(0,86400,5)]
```
GTim
2017-07-09 09:49:52 +08:00
@GTim 把 5 分钟看成秒了,把 86400 换成 1440
hxsf
2017-07-09 09:50:51 +08:00
[str(x) + ':' + str(y) for x in range(0, 24) for y in range(0, 60, 5)] 用推导式啊。。。
hsmocc
2017-07-09 10:21:44 +08:00
["%02d:%02d" %(h,m) for h in range(0, 24) for m in range(0, 60, 5)]
staticor
2017-07-09 11:09:32 +08:00
如果用过 Pandas 的话有方便的时间序列函数.

```python
import pandas as pd
pd.date_range('2017-01-01 01:00:00', '2017-01-01 02:00:00', freq= '5min')

```
Hieast
2017-07-09 11:11:17 +08:00
arrow 也有专门的时间序列函数
hand515
2017-07-09 13:50:15 +08:00
if len(str(y)) == 1:
为啥不直接 if y< 10: 呢。
raiz
2017-07-09 16:42:10 +08:00
seq = ["%02d:%02d" %(i, j) for i in range(0,24) for j in range(0,60,5)]
hugo775128583
2017-07-09 16:44:02 +08:00
你需要 rrule
mckelvin
2017-07-10 09:17:45 +08:00
```
import datetime
start_dt = datetime.datetime(2017, 1, 1)
interval = datetime.timedelta(seconds=300)
for i in range(24 * 12):
print (start_dt + interval * i).strftime("%H:%M")
```
svsky
2017-07-10 09:46:24 +08:00
@hsmocc 谢谢
hwsdien
2017-07-10 11:37:43 +08:00
import arrow
start, end = arrow.now().span('day')
print [repr(r) for r in arrow.Arrow.range('minute', start, end) if r.minute % 5 == 0]
xuzixx1001
2017-07-10 16:00:59 +08:00
9 楼+1 dateutil rrule
yylucifer
2017-07-18 11:52:28 +08:00
@GTim 这个不错

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/374031

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX