Python列表推导式elif用法问题:日期判断结果全为True排查
问题原因与解决方法
你的列表推导式逻辑错误,导致所有日期都被判定为True,具体问题出在判断条件的逻辑链上:
原代码的判断逻辑为:
True if j.month < 5 else True if j.month > 1 else False
拆解后会覆盖所有月份:
- 1月的月份是1,满足
j.month < 5,返回True - 2-4月满足
j.month < 5,返回True - 5-12月满足
j.month > 1,返回True
所有月份都命中了返回True的分支,自然最终列表全为True。
修正后的代码
只需直接判断月份是否在2到4之间即可:
import numpy as np import datetime # 设置起始日期并创建时间范围数组 startDate = datetime.datetime(2023,1,1) dateHour = np.array([startDate + datetime.timedelta(0,3600*n) for n in range(8760)]) # 生成目标列表:仅2月至4月对应True datesVect = [2 <= j.month <= 4 for j in dateHour]
验证时,1月、5-12月的元素会返回False,2-4月返回True,符合你的需求。
内容的提问来源于stack exchange,提问作者Mauro
相关产品推荐
相关产品推荐

