Python实现:为嵌套列表的每个子列表头部插入日期字符串
解决方案
方法1:直接修改原嵌套列表(原地操作)
如果不需要保留原numlist的原始结构,可以用zip同时遍历daylist和numlist的子列表,对每个子列表执行插入操作:
for day, sub_list in zip(daylist, numlist): sub_list.insert(0, day) # 验证结果 for item in numlist: print(item)
输出示例:
['2022-11-14', 10, 17, 21, 30, 31] ['2022-11-15', 12, 14, 15, 34, 41]
方法2:生成新列表(不修改原数据)
如果需要保留原numlist的内容,用列表推导式生成全新的嵌套列表,将日期与子列表拼接:
masterlist = [[day] + sub_list for day, sub_list in zip(daylist, numlist)] # 验证结果 for item in masterlist: print(item)
输出与方法1一致,但原numlist不会被改动。
针对后续扩展(添加ID等字段)
如果之后需要加入ID或其他额外字段,只需要扩展zip的遍历对象,把新字段加到子列表开头即可:
# 假设新增id_list = [1, 2] id_list = [1, 2] masterlist = [[id_val, day] + sub_list for id_val, day, sub_list in zip(id_list, daylist, numlist)]
输出示例:
[1, '2022-11-14', 10, 17, 21, 30, 31] [2, '2022-11-15', 12, 14, 15, 34, 41]
你之前的zip推导式问题说明
你之前的代码[j for i in zip(daylist,numlist) for j in i]是把zip生成的每一组(日期, 子列表)拆成了两个独立元素,最终得到的是平铺开的列表,而非将日期合并到子列表中,所以不符合需求。上面的两种方法都是将日期与子列表合并为一个完整的子列表,完全匹配你的要求。
内容的提问来源于stack exchange,提问作者ZeroLoop
相关产品推荐
相关产品推荐

