python - 获取每月的最后一个星期日 - 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 不应该吗?
解决方案
我建议查看部分数据以了解发生了什么:
第一个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))
给出了最大的月历列表。请参阅使用大于或小于运算符比较两个列表为什么会返回最后一个列表。
第四个与第一个相同。
推荐阅读
- websocket - Cypress 使用 Axios 进行测试
- python - Selenium python 中 Chrome 策略和 Chrome 实验选项之间的名称映射
- javascript - public-ip 返回 Promise
- android - APK 中的 PWA:为什么它与 Android API 隔离?
- google-cloud-platform - How to send large file as chunked requests under Resumable Upload in GCS if the chunk gets interrupted?
- flutter - 是否可以从 Flutter 修复 vscode 上的所有问题
- python-3.x - 文件之间的 Python 变量
- cuda - 测量nvidia gpu的利用率
- git - Github Action 通过时如何合并到受保护的分支?
- java - 如何在 AKKA java 中创建多个演员并保留他们的列表?