如何在Python中生成以下字符串序列?
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)解决方案?
发布于 2012-03-16 19:14:07
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发布于 2012-03-16 19:15:10
试试这个
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发布于 2012-03-16 19:20:30
我认为你通过查看生成器和列表理解来使事情变得过于复杂。Python datetime module将很容易做到这一点。
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)https://stackoverflow.com/questions/9736167
复制相似问题