循环浏览列表中除最后一项以外的所有项,并将其与下一项进行比较。如果第二个月的月份正好比第一个月的月份大一个,或者第二秒的月份为1且第二年的年份恰好大于第一个月的月份,则两个项是连续的。返回
False在第一次失败,否则返回
True底。
编辑:在第二种情况下,除了第二个月是1,显然第一个月必须是12。
编辑2:在第一种情况下,显然年份应该相同。那就是你写得太快所得到的。
情人:
#!/usr/bin/pythonfrom datetime import datedef is_consecutive(datelist): for idx, my_date in enumerate(datelist[:-1]): if ((datelist[idx + 1].month - my_date.month == 1 and datelist[idx + 1].year == my_date.year) or (datelist[idx + 1].month == 1 and my_date.month == 12 and datelist[idx + 1].year - my_date.year == 1)): continue else: return False return Trueprint is_consecutive([date(2010, 10, 3),date(2010, 11, 8),date(2010, 12, 1),date(2011, 1, 11)])print is_consecutive([date(2010, 7, 6),date(2010, 8, 24),date(2010, 3, 5),date(2010, 10, 25)])
一种替代的实现,可能更容易遵循,但基本上可以做同样的事情:
def is_consecutive(datelist): for idx, my_date in enumerate(datelist[:-1]): month_diff = datelist[idx + 1].month - my_date.month year_diff = datelist[idx + 1].year - my_date.year if ((month_diff == 1 and year_diff == 0) or (month_diff == -11 and year_diff == 1)): continue else: return False return True



