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

如何对包含字母与数字的列表进行自然排序?

按剧集编号正确排序列表的方法

你遇到的问题是默认字符串排序会把EP10排在EP2前面,这是因为字符串排序是逐个字符比较,1的ASCII码比2小。要实现按EP后的数字从小到大排序,只需自定义排序规则即可。

原列表

original_list = ['american dad S1-EP1', 'american dad S1-EP10', 'american dad S1-EP11', 'american dad S1-EP12', 'american dad S1-EP13', 'american dad S1-EP14', 'american dad S1-EP15', 'american dad S1-EP16', 'american dad S1-EP17', 'american dad S1-EP18', 'american dad S1-EP19', 'american dad S1-EP2', 'american dad S1-EP20', 'american dad S1-EP21', 'american dad S1-EP22', 'american dad S1-EP23', 'american dad S1-EP3', 'american dad S1-EP4', 'american dad S1-EP5', 'american dad S1-EP6', 'american dad S1-EP7', 'american dad S1-EP8', 'american dad S1-EP9']

方法一:分割字符串提取编号

通过split('-EP')分割字符串,提取出EP后的数字并转为整数,以此作为排序依据:

sorted_list = sorted(original_list, key=lambda x: int(x.split('-EP')[1]))

# 输出排序后的列表
for item in sorted_list:
    print(item)

方法二:正则表达式提取编号

如果字符串格式有变动,用正则表达式提取EP后的数字更通用:

import re

sorted_list = sorted(original_list, key=lambda x: int(re.search(r'EP(\d+)', x).group(1)))

# 输出排序后的列表
for item in sorted_list:
    print(item)

两种方法都能得到你想要的顺序:EP1、EP2、EP3……EP23。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:20:30