一、前言

列表排序基础:https://www.jianshu.com/p/44d4924744cb

列表的字符串包含数字,直接使用sorted()排序,得到的结果往往不如人意,如下:

your_list = ["a1", "a2", "a10", "b2", "b1"]

print(sorted(your_list))

#输出

['a1', 'a10', 'a2', 'b1', 'b2']

期望大多数是这样:['a1', 'a2', 'a10', 'b1', 'b2']

二、纯数字字符串

shuzi_list = ['1', '4', '2', '3', '22', '23', '24', '33', '35']

print(sorted(shuzi_list))

#传参key,使用匿名函数,info指列表的数据,将字符串转为整数然后排序

print(sorted(shuzi_list, key=lambda info: (int(info))))

#输出

['1', '2', '22', '23', '24', '3', '33', '35', '4']

['1', '2', '3', '4', '22', '23', '24', '33', '35']

三、字符串一侧含有数字

#数字在左边,关注字符串截取

list2 = ['0.jpg', '1.jpg', '10.jpg', '11.jpg', '12.jpg', '13.jpg', '14.jpg', '15.jpg', '16.jpg', '17.jpg', '18.jpg',

'19.jpg', '2.jpg', '20.jpg', '21.jpg', '22.jpg', '23.jpg', '24.jpg', '25.jpg', '3.jpg', '4.jpg', '5.jpg',

'6.jpg', '7.jpg', '8.jpg', '9.jpg']

#新增传参key,类型为元组,对字符串分组处理,按照元组的两个值排序

print(sorted(list2, key=lambda info: (int(info[0:-4]), info[-4:])))

#数字在右边,关注字符串截取

your_list = ["a1", "a2", "a10", "b2", "b1"]

#同理

print(sorted(your_list, key=lambda info: (info[0], int(info[1:]))))

#输出

['0.jpg', '1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg', '10.jpg', '11.jpg', '12.jpg', '13.jpg', '14.jpg', '15.jpg', '16.jpg', '17.jpg', '18.jpg', '19.jpg', '20.jpg', '21.jpg', '22.jpg', '23.jpg', '24.jpg', '25.jpg']

['a1', 'a2', 'a10', 'b1', 'b2']

四、字符串两边都有数字

字符串两边都是数字,用索引处理就很难了,需要用到正则表达式,提取数字进行排序

import re

zh_list = ['最終話-兩人的故事重新書寫-0.jpg', '最終話-兩人的故事重新書寫-1.jpg', '最終話-兩人的故事重新書寫-10.jpg', '最終話-兩人的故事重新書寫-11.jpg',

'最終話-兩人的故事重新書寫-12.jpg', '最終話-兩人的故事重新書寫-13.jpg', '最終話-兩人的故事重新書寫-14.jpg', '最終話-兩人的故事重新書寫-15.jpg',

'最終話-兩人的故事重新書寫-16.jpg', '最終話-兩人的故事重新書寫-17.jpg', '最終話-兩人的故事重新書寫-18.jpg', '最終話-兩人的故事重新書寫-19.jpg',

'最終話-兩人的故事重新書寫-2.jpg', '最終話-兩人的故事重新書寫-20.jpg', '最終話-兩人的故事重新書寫-21.jpg', '最終話-兩人的故事重新書寫-22.jpg',

'最終話-兩人的故事重新書寫-23.jpg', '最終話-兩人的故事重新書寫-24.jpg', '最終話-兩人的故事重新書寫-25.jpg', '最終話-兩人的故事重新書寫-3.jpg',

'最終話-兩人的故事重新書寫-4.jpg', '最終話-兩人的故事重新書寫-5.jpg', '最終話-兩人的故事重新書寫-6.jpg', '最終話-兩人的故事重新書寫-7.jpg',

'最終話-兩人的故事重新書寫-8.jpg', '最終話-兩人的故事重新書寫-9.jpg']

#用正则表达式提取数字排序

print(sorted(zh_list, key=lambda info: (int(re.findall(r'-(\d+).jpg', info)[0]))))

#输出

['最終話-兩人的故事重新書寫-0.jpg', '最終話-兩人的故事重新書寫-1.jpg', '最終話-兩人的故事重新書寫-2.jpg', '最終話-兩人的故事重新書寫-3.jpg', '最終話-兩人的故事重新書寫-4.jpg', '最終話-兩人的故事重新書寫-5.jpg', '最終話-兩人的故事重新書寫-6.jpg', '最終話-兩人的故事重新書寫-7.jpg', '最終話-兩人的故事重新書寫-8.jpg', '最終話-兩人的故事重新書寫-9.jpg', '最終話-兩人的故事重新書寫-10.jpg', '最終話-兩人的故事重新書寫-11.jpg', '最終話-兩人的故事重新書寫-12.jpg', '最終話-兩人的故事重新書寫-13.jpg', '最終話-兩人的故事重新書寫-14.jpg', '最終話-兩人的故事重新書寫-15.jpg', '最終話-兩人的故事重新書寫-16.jpg', '最終話-兩人的故事重新書寫-17.jpg', '最終話-兩人的故事重新書寫-18.jpg', '最終話-兩人的故事重新書寫-19.jpg', '最終話-兩人的故事重新書寫-20.jpg', '最終話-兩人的故事重新書寫-21.jpg', '最終話-兩人的故事重新書寫-22.jpg', '最終話-兩人的故事重新書寫-23.jpg', '最終話-兩人的故事重新書寫-24.jpg', '最終話-兩人的故事重新書寫-25.jpg']

python数字字符串排序_Python-数字字符串排序相关推荐

  1. python字符串去重排序_python实现字符串转数字排序-女性时尚流行美容健康娱乐mv-ida网...

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页  > 高级搜索 python 取子 字符 串 ...

  2. python数字排序_python数字排序

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 例如,你想要按照名字来对一列团队成员名单进行排序,或者想按照优先级来对一列项目进 ...

  3. python list排序_Python中字符串List按照长度排序

    下面看下字符串List按照长度排序(python)的实现方法 myList = ['青海省','内蒙古自治区','西藏自治区','新疆维吾尔自治区','广西壮族自治区'] 1.首先得到每个字符串长度 ...

  4. python字符串加减乘除_python 数字字符串加减乘除-女性时尚流行美容健康娱乐mv-ida网...

    女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 js 验证 数字 (验证 字符 ...

  5. python字符串排序_Python对字符串列表进行排序

    在本教程中,我们将看到如何对字符串列表进行排序.我们将使用sort方法和sorted函数对给定的字符串列表进行排序.然后,我们将了解如何根据不同的条件(例如长度,值等)对字符串列表进行排序, 让我们看 ...

  6. python判断字母大写_python判断字符串是字母 数字 大小写(转载)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 今天遇到的字符串处理的问题,记录一下方便使用 str1 = input('请输入一个字符:') #初始化字符.数字.空格.特殊字符的计数 lowercas ...

  7. python 判断大小写字母_python判断字符串是字母 数字 大小写(转载)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 今天遇到的字符串处理的问题,记录一下方便使用 str1 = input('请输入一个字符:') #初始化字符.数字.空格.特殊字符的计数 lowercas ...

  8. python怎么创建字符串列表_Python(字符串,列表,元组,字典)

    1.字符串:标识" " PS:字符串是%s:整数是%d:浮点数%f strip:移除(空白或者特定字符) split:分割 len:长度(获取元素的个数) 索引 切片 2.列表li ...

  9. python的内置函数列表排序_Python 列表的排序 - sort/sorted

    Python 集合的遍历,推导及 filter/map/reduce 操作 中讲了对集合的 filter, map 和 reduce 操作,那还有 sort 排序呢?像 Java 一样,Python  ...

  10. python转化为字符串格式_Python格式化字符串~转

    在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作符,非常类似C语言里的pr ...

最新文章

  1. android 在 ListView 的 item 中插入 GridView 仿微信朋友圈图片显示。
  2. 设计模式(行为型模式)——访问者模式(Visitor)
  3. 中国医药品市场供需状况与竞争前景研究报告2022年
  4. unilever workspace creating space
  5. 写一个ajax程序就是如此简单
  6. 编辑器FreeTextBox升级至3.0
  7. Qt中文乱码解决思路
  8. flatmap_flatMap()与concatMap()与concatMapEager()– RxJava常见问题解答
  9. python输入输出代码_python基本输入输出代码示例
  10. Spring Boot如何以优雅的姿势校验参数
  11. bzoj4850 [JSOI2016]灯塔
  12. windows和linux 修改 hosts的路径
  13. [置顶] 原创鼠标拖动实现DIV排序
  14. BytePS源码解析
  15. btsync多客户端同步的设置
  16. koa2 请求转发实现
  17. 加多宝李二强:营销数字化闭环初体验,真的很爽
  18. JESD204接口调试总结——Xilinx JESD204B数据手册的理解
  19. garch dcc用matlab,用matlab工具箱怎么对garch模型做...
  20. pytorch学习最全官网地址

热门文章

  1. Cocos Creator | 疯抢红包小游戏,有代码!
  2. linux java 调用c_Linux上从Java程序中调用C函数
  3. linux 查oracle版本号,查看linux中oracle版本号的方法总结
  4. 区块链(七)智能合约(Smart Contract)
  5. 【C语言】笔记 持续更新
  6. CS269I:Incentives in Computer Science 学习笔记 Lecture 12 对称信息和声誉系统
  7. 单眼皮眼妆学起来 打造电眼只需六步
  8. 邹恒甫答胡景北学兄: 张维迎是报邹恒甫不支持他当正院长的仇
  9. QQ会员的“十元”生意逻辑:人以群分
  10. [算法]柏林噪声 Perlin Noise