You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改嵌套列表中子列表首元素的日期格式并保留原结构?

解决嵌套列表中日期格式转换并保留结构的问题

你原来的列表推导式只提取了转换后的日期,没有保留每个子列表的完整结构。要保留嵌套结构,只需要在推导式中生成包含转换后日期和原数值的新子列表即可。

修正后的代码(含函数实现)

import datetime

def convert_date_format(datelist):
    return [
        [datetime.datetime.strptime(item[0], "%Y/%m/%d").strftime("%d.%m.%Y"), item[1]]
        for item in datelist
    ]

# 测试示例
datelist = [["2019/04/12", 7.0], ["2019/02/09", 7.3], ["2018/08/14", 6.1]]
result = convert_date_format(datelist)
print(result)

输出结果

[["12.04.2019", 7.0], ["09.02.2019", 7.3], ["14.08.2018", 6.1]]

关键说明

  • 原代码的问题:[datetime... for i in datelist] 只返回了转换后的日期字符串,相当于把每个子列表替换成了单个字符串,自然丢失了嵌套结构。
  • 修正逻辑:对每个子列表item,生成一个新的子列表[转换后的日期, item[1]],这样既修改了日期格式,又保留了原有的嵌套列表结构和数值部分。
  • 关于strptime和strftime:
    • strptime(item[0], "%Y/%m/%d"):把字符串解析成datetime对象,%Y/%m/%d对应原日期的yyyy/mm/dd格式。
    • .strftime("%d.%m.%Y"):把datetime对象格式化为指定的dd.mm.yyyy字符串。

扩展:处理可能的异常(可选)

如果输入的列表中存在格式不正确的日期,可以添加异常处理,避免程序崩溃:

import datetime

def convert_date_format(datelist):
    converted = []
    for item in datelist:
        try:
            new_date = datetime.datetime.strptime(item[0], "%Y/%m/%d").strftime("%d.%m.%Y")
            converted.append([new_date, item[1]])
        except ValueError:
            # 保留原数据或做其他自定义处理
            converted.append(item)
    return converted

内容的提问来源于stack exchange,提问作者hiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:01:49