如何以Pythonic方式筛选日期列表中符合指定年月日的元素?
提取指定日期的Pythonic实现
要从格式为DD_MM_YYYY的日期字符串列表Dates_list中,精准提取日=01、月=06、年=1950的元素,有两种简洁的Pythonic写法:
方法一:直接匹配完整字符串
如果确定所有日期严格遵循DD_MM_YYYY格式,直接判断字符串是否等于目标日期即可,效率最高:
new_list = [date for date in Dates_list if date == "01_06_1950"]
方法二:拆分后验证各部分
如果需要更灵活的验证(比如兼容格式微小差异,需确保拆分后是三个部分),可以拆分字符串后分别检查日、月、年:
new_list = [date for date in Dates_list if date.split("_") == ["01", "06", "1950"]]
或者拆分后逐个判断条件,可读性更强:
new_list = [date for date in Dates_list if (dd := date.split("_")[0]) == "01" and (mm := date.split("_")[1]) == "06" and (yyyy := date.split("_")[2]) == "1950"]
原写法问题说明
你之前的列表推导式逻辑错误:(x in for x in [DD,MM, YYYY ])不仅语法不合法,即便修正,也是判断日期字符串是否包含任意一个子串(逻辑或),无法实现三个条件同时满足的需求。
内容的提问来源于stack exchange,提问作者Rocco B.
相关产品推荐
相关产品推荐

