首页 > 解决方案 > 获取每月的最后一个星期日 - python

问题描述

我有一个关于 2 行代码的问题 - 从我的想法来看,它应该是相同的,但是我得到了这 2 行不同的输出。

有人可以解释我为什么吗?

max(week[-1] for week in calendar.monthcalendar(year,month))
max(calendar.monthcalendar(year,month)[-1])

年 = 2021 和月 = 3

对于第一行,我得到正确的输出 28th 是星期天。对于第二行,我得到 31,这基本上就是最后一个数字。月历中的 week[-1] 应该是最后一个数组吗?在这种情况下是 [29,30,31,0,0,0,0] 所以它的最大值应该是 31

max(week for week in calendar.monthcalender(year,month))
max(week[-1] for week in calendar.monthcalendar(year,month))

还有这 2 行——第一行给了我一个数组 [29,30,31,0,0,0,0],第二行给了我一个数字 28,我不明白为什么?第一个返回 31 和第二个 28 不应该吗?

标签: python

解决方案


我建议查看部分数据以了解发生了什么:

第一个max(week[-1] for week in calendar.monthcalendar(year,month))循环遍历日历的周列表。for 循环的输出是:7, 14, 21, 28, 0: 打印一周的最后一天。因此max返回28,因为它是这个的最大值。

第二个max(calendar.monthcalendar(year,month)[-1])是一个月的最后一周[29, 30, 31, 0, 0, 0, 0]。因此max返回31

第三个max(week for week in calendar.monthcalender(year,month))给出了最大的月历列表。请参阅使用大于或小于运算符比较两个列表为什么会返回最后一个列表。

第四个与第一个相同。


推荐阅读