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

如何按末尾数字降序排列指定格式PNG文件名的嵌套列表

按文件名中的数字降序排序嵌套列表

可以用Python内置的sorted()函数配合自定义排序键实现需求,核心是提取每个文件名里35_2_后的数字,转成整数作为排序依据,再设置降序排列:

list_ = [['35_2_20.png'],
         ['35_2_18.png'],
         ['35_2_9.png'],
         ['35_2_11.png'],
         ['35_2_7.png'],
         ['35_2_16.png'],
         ['35_2_6.png'],
         ['35_2_17.png'],
         ['35_2_1.png'],
         ['35_2_10.png'],
         ['35_2_19.png'],
         ['35_2_8.png'],
         ['35_2_4.png'],
         ['35_2_15.png'],
         ['35_2_3.png'],
         ['35_2_12.png'],
         ['35_2_2.png'],
         ['35_2_13.png'],
         ['35_2_5.png'],
         ['35_2_14.png']]

# 生成排序后的新列表
sorted_list = sorted(list_, key=lambda x: int(x[0].split('_')[2].split('.')[0]), reverse=True)

# 验证结果
for item in sorted_list:
    print(item)

代码说明:

  • lambda x: int(x[0].split('_')[2].split('.')[0]):排序的核心逻辑:
    1. x[0]:取出每个子列表里的唯一文件名
    2. split('_')[2]:按下划线分割文件名,取第三段(比如35_2_20.png分割后得到['35','2','20.png'],第三段是20.png)
    3. split('.')[0]:按小数点分割,取第一段得到数字字符串20
    4. int(...):把字符串转成整数,确保排序是按数字大小而非字符串字典序
  • reverse=True:设置为降序排列,满足从大到小的要求

如果想要直接修改原列表而非生成新列表,用列表的sort()方法即可:

list_.sort(key=lambda x: int(x[0].split('_')[2].split('.')[0]), reverse=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:15:48