近期遇到一个小任务,要求按序号(integer affix:整数前缀)从小到大的顺序输出某列表中所有的字符串元素。当时查了一些资料解决了,在此做个记录。
一、问题描述
输入: li = ['99_A_item_b', '1_A_item_a', '12_A_item_c', '102_A_item_f', '20_A_item_d', '15_A_item_e']
(该列表是自己随便编的,但当时处理的列表有个特点,即每一项都有一个子串“A_”,且其前面是数字加下划线,方便定位查找)
预期输出:['1_A_item_a', '12_A_item_c', '15_A_item_e', '20_A_item_d', '99_A_item_b', '102_A_item_f']
如果用普通的list.sort()方法,会发现它排序的法则与我们预期的不一样:

它是根据字符串的第一位、第二位依次进行排序:比如每个元素的第一位,分别是1,1,1,1,2,9;第二位分别是0,2,5等等。
二、解决方案
sorted函数加上一个lambda函数(笔者认为非常妙,读者觉得香吗)

sorted函数官方文档(若英文不好可略过):

本文记录了一个小任务,要求按整数前缀从小到大排序字符串列表,如['99_A_item_b', '1_A_item_a']。通过使用sorted函数结合lambda表达式,成功实现了预期的排序效果。注意,排序时需将字符串前缀转换为int类型,否则排序结果不符合预期。此外,还提及了按字母排序和使用正则表达式的解决方案。"
113838885,8452874,Lambda表达式与递归:深入理解递归与Y组合子,"['编程语言', 'lambda', '递归法']
最低0.47元/天 解锁文章
3万+

被折叠的 条评论
为什么被折叠?



