是否有一种优雅且Pythonic的方法来捕获在生成器上迭代的for循环中的第一个和最后一个项目?
from calendar import Calendar
cal = Calendar(6)
month_dates = cal.itermonthdates(year, month)
for date in month_dates:
if (is first item): # this is fake
month_start = date
if (is last item): # so is this
month_end = date
此代码尝试获取该月结束的一周的第一天和该月结束的一周的最后一天。示例:对于 6 月,月份开始应计算为 5/31/09。尽管从技术上讲这是五月的一天,但它是六月开始的一周的第一天。
Month-dates 是一个生成器,所以我不能做 [:-1] 的事情。有什么更好的方法来处理这个问题?
我只是在开始时将其强制放入列表中:
from calendar import Calendar, SUNDAY
cal = Calendar(SUNDAY)
month_dates = list(cal.itermonthdates(year, month))
month_start = month_dates[0]
month_end = month_dates[-1]
由于只能有 42 天(计算前导和尾随上下文),因此这对性能的影响可以忽略不计。
此外,使用 SUNDAY 比使用幻数更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)