首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成step 7秒的时间序列

生成step 7秒的时间序列
EN

Stack Overflow用户
提问于 2012-03-16 19:07:48
回答 4查看 6.4K关注 0票数 5

如何在Python中生成以下字符串序列?

代码语言:javascript
复制
00:00:00
00:00:07
00:00:14
00:00:21
...
00:00:49
00:00:56
00:01:03

步长是7秒。结束时间大约是下午三点半:+/-

我会提出使用模算术的解决方案(前1200表示小时,60表示分钟,其余的是秒,数字应转换为字符串,“一位”字符串应以“0”为前缀)。

在标准库或列表理解中使用一些辅助生成器有没有更聪明的(pythonic)解决方案?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-16 19:14:07

代码语言:javascript
复制
def yield_times():
    from datetime import date, time, datetime, timedelta
    start = datetime.combine(date.today(), time(0, 0))
    yield start.strftime("%H:%M:%S")
    while True:
        start += timedelta(seconds=7)
        yield start.strftime("%H:%M:%S")

>>> gen = yield_times()
>>> for ii in range(5):
...     print gen.next()
... 
00:00:00
00:00:07
00:00:14
00:00:21
00:00:28
票数 9
EN

Stack Overflow用户

发布于 2012-03-16 19:15:10

试试这个

代码语言:javascript
复制
from datetime import datetime, timedelta

now = datetime(2000, 1, 1, 0, 0, 0)
last = datetime(2000, 1, 1, 3, 30, 0)
delta = timedelta(seconds=7)

times = []
while now < last:
    times.append(now.strftime('%H:%M:%S'))
    now += delta
票数 5
EN

Stack Overflow用户

发布于 2012-03-16 19:20:30

我认为你通过查看生成器和列表理解来使事情变得过于复杂。Python datetime module将很容易做到这一点。

代码语言:javascript
复制
from datetime import datetime, timedelta

t = datetime(2012, 1, 1, 0, 0, 0)

while t < datetime(2012, 1, 1, 3, 30, 0):
    print t.time()

    t = t + timedelta(seconds=7)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9736167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档