如何对Python列表执行前向填充,合并日期与时间元素
问题描述
现有如下Python列表:
a = ["Today, 30 Dec", "01:10", "02:30", "Tomorrow, 31 Dec", "00:00", "04:30", "05:30", "01 Jan 2023", "01:00", "10:00"]
需要对该列表执行**前向填充(forward fill)**操作,将每个时间元素与最近的前置日期元素合并,得到目标列表:
b = ["Today, 30 Dec 01:10", "Today, 30 Dec 02:30", "Tomorrow, 31 Dec 00:00", "Tomorrow, 31 Dec 04:30", "Tomorrow, 31 Dec 05:30", "01 Jan 2023 01:00", "01 Jan 2023 10:00"]
解决方案
可以通过遍历列表并维护当前日期变量的方式实现,代码如下:
a = ["Today, 30 Dec", "01:10", "02:30", "Tomorrow, 31 Dec", "00:00", "04:30", "05:30", "01 Jan 2023", "01:00", "10:00"] b = [] current_date = None for item in a: # 通过是否包含冒号区分日期和时间项 if ":" not in item: current_date = item else: if current_date: b.append(f"{current_date} {item}") # 输出结果 print(b)
代码说明
- 用
current_date变量记录最近遇到的日期项,遍历到新日期时更新该变量 - 时间项都包含冒号,以此作为判断依据
- 遇到时间项时,将其与当前日期拼接后加入结果列表
- 运行后输出的结果与目标列表完全匹配
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

