Python 中 xrange 生成的最后个项怎么判断。

2017-07-17 16:10:40 +08:00
 csdreamdong
start_time = '2017-01-01 00:00:00'
end_time = '2017-07-01 00:00:00'
start_time_st = int(time.mktime(time.strptime(start_time, '%Y-%m-%d %H:%M:%S')))
end_time_st = int(time.mktime(time.strptime(end_time, '%Y-%m-%d %H:%M:%S')))

for stmp in xrange(start_time_st, end_time_st, 60):
    ......
    需要生成一个 list,
    if len(list)>=100 or stmp 是最后一个时:
        do.....

这个场景下,怎么判断 stmp 已经是最后一个了。求助大神们。

2186 次点击
所在节点    Python
11 条回复
csdreamdong
2017-07-17 16:11:35 +08:00
python2.7
sleshep
2017-07-17 16:13:12 +08:00
用 arrow 库啊,你这么折腾时间不难受啊
sleshep
2017-07-17 16:14:33 +08:00
import arrow
arrow.get(2017).span('month')[:7]


2 行搞定的事情
csdreamdong
2017-07-17 16:15:11 +08:00
@sleshep 我想指定一段时间,每隔 60 秒一个时间戳。要这段时间内的所有时间戳。
sleshep
2017-07-17 16:20:47 +08:00
>>> from datetime import datetime
>>> import arrow
>>> start = datetime(2013, 5, 5, 12, 30)
>>> end = datetime(2013, 5, 5, 17, 15)
>>> for r in arrow.Arrow.range('hour', start, end):
... print repr(r)
...
<Arrow [2013-05-05T12:30:00+00:00]>
<Arrow [2013-05-05T13:30:00+00:00]>
<Arrow [2013-05-05T14:30:00+00:00]>
<Arrow [2013-05-05T15:30:00+00:00]>
<Arrow [2013-05-05T16:30:00+00:00]>
csdreamdong
2017-07-17 16:27:44 +08:00
@sleshep 但怎么判断是不是最后个呢?
rogerchen
2017-07-17 16:58:34 +08:00
for i, stmp in enumerate(xrange(...))
KingMaster
2017-07-17 17:13:51 +08:00
if stmp + 60 >= end_time_st:
...
bestkayle
2017-07-17 17:27:46 +08:00
@rogerchen 这还不如直接用 range。。。
crab
2017-07-17 17:46:44 +08:00
用 unix 时间,再转回去。
zjuhwc
2017-07-18 08:46:20 +08:00
把是不是最后一个的判断挪到循环外面去?
因为 for 循环结束后,stmp 就停在最后一个值上了,循环外做一次 do 操作

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

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

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

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

© 2021 V2EX