如何用Python循环从不同长度列表生成嵌套日期列表
生成嵌套日期列表的解决方案
问题描述
我有两个列表,分别名为start和time:
start包含3个datetime元素time包含3个列表,长度分别为841、600、840
已能成功将start[0]与time[0]的每个元素相加生成一组日期,但遍历start和time时,希望得到一个包含3个对应长度子列表的嵌套列表,而非总长度为2281的扁平列表。
单组处理的成功代码
all_dates = [] for i in range(len(time)): all_dates.append(start + dt.timedelta(days = time[i]))
生成扁平列表的尝试代码
all_dates = [] for i in range(len(start)): for j in range(len(time[i])): all_dates.append(start[i] + dt.timedelta(days = time[i][j]))
解决代码
要生成嵌套结构,需要在外层循环中为每组数据创建独立的子列表,再将子列表加入总列表:
普通循环版本
import datetime as dt all_dates = [] for i in range(len(start)): sub_dates = [] # 初始化当前组的子列表 for day in time[i]: sub_dates.append(start[i] + dt.timedelta(days=day)) all_dates.append(sub_dates) # 将子列表加入总列表
列表推导式版本(更简洁)
import datetime as dt all_dates = [ [start[i] + dt.timedelta(days=day) for day in time[i]] for i in range(len(start)) ]
运行后all_dates会是一个嵌套列表,其中包含3个子列表,长度分别为841、600、840,与time的子列表一一对应。
内容的提问来源于stack exchange,提问作者SWARNENDU PAL
相关产品推荐
相关产品推荐

