python数字字符串排序_Python-数字字符串排序
一、前言
列表排序基础: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-数字字符串排序相关推荐
- python字符串去重排序_python实现字符串转数字排序-女性时尚流行美容健康娱乐mv-ida网...
女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 python 取子 字符 串 ...
- python数字排序_python数字排序
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 例如,你想要按照名字来对一列团队成员名单进行排序,或者想按照优先级来对一列项目进 ...
- python list排序_Python中字符串List按照长度排序
下面看下字符串List按照长度排序(python)的实现方法 myList = ['青海省','内蒙古自治区','西藏自治区','新疆维吾尔自治区','广西壮族自治区'] 1.首先得到每个字符串长度 ...
- python字符串加减乘除_python 数字字符串加减乘除-女性时尚流行美容健康娱乐mv-ida网...
女性时尚流行美容健康娱乐mv-ida网 mvida时尚娱乐网 首页 美容 护肤 化妆技巧 发型 服饰 健康 情感 美体 美食 娱乐 明星八卦 首页 > 高级搜索 js 验证 数字 (验证 字符 ...
- python字符串排序_Python对字符串列表进行排序
在本教程中,我们将看到如何对字符串列表进行排序.我们将使用sort方法和sorted函数对给定的字符串列表进行排序.然后,我们将了解如何根据不同的条件(例如长度,值等)对字符串列表进行排序, 让我们看 ...
- python判断字母大写_python判断字符串是字母 数字 大小写(转载)
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 今天遇到的字符串处理的问题,记录一下方便使用 str1 = input('请输入一个字符:') #初始化字符.数字.空格.特殊字符的计数 lowercas ...
- python 判断大小写字母_python判断字符串是字母 数字 大小写(转载)
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 今天遇到的字符串处理的问题,记录一下方便使用 str1 = input('请输入一个字符:') #初始化字符.数字.空格.特殊字符的计数 lowercas ...
- python怎么创建字符串列表_Python(字符串,列表,元组,字典)
1.字符串:标识" " PS:字符串是%s:整数是%d:浮点数%f strip:移除(空白或者特定字符) split:分割 len:长度(获取元素的个数) 索引 切片 2.列表li ...
- python的内置函数列表排序_Python 列表的排序 - sort/sorted
Python 集合的遍历,推导及 filter/map/reduce 操作 中讲了对集合的 filter, map 和 reduce 操作,那还有 sort 排序呢?像 Java 一样,Python ...
- python转化为字符串格式_Python格式化字符串~转
在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作符,非常类似C语言里的pr ...
最新文章
- android 在 ListView 的 item 中插入 GridView 仿微信朋友圈图片显示。
- 设计模式(行为型模式)——访问者模式(Visitor)
- 中国医药品市场供需状况与竞争前景研究报告2022年
- unilever workspace creating space
- 写一个ajax程序就是如此简单
- 编辑器FreeTextBox升级至3.0
- Qt中文乱码解决思路
- flatmap_flatMap()与concatMap()与concatMapEager()– RxJava常见问题解答
- python输入输出代码_python基本输入输出代码示例
- Spring Boot如何以优雅的姿势校验参数
- bzoj4850 [JSOI2016]灯塔
- windows和linux 修改 hosts的路径
- [置顶] 原创鼠标拖动实现DIV排序
- BytePS源码解析
- btsync多客户端同步的设置
- koa2 请求转发实现
- 加多宝李二强:营销数字化闭环初体验,真的很爽
- JESD204接口调试总结——Xilinx JESD204B数据手册的理解
- garch dcc用matlab,用matlab工具箱怎么对garch模型做...
- pytorch学习最全官网地址
热门文章
- Cocos Creator | 疯抢红包小游戏,有代码!
- linux java 调用c_Linux上从Java程序中调用C函数
- linux 查oracle版本号,查看linux中oracle版本号的方法总结
- 区块链(七)智能合约(Smart Contract)
- 【C语言】笔记 持续更新
- CS269I:Incentives in Computer Science 学习笔记 Lecture 12 对称信息和声誉系统
- 单眼皮眼妆学起来 打造电眼只需六步
- 邹恒甫答胡景北学兄: 张维迎是报邹恒甫不支持他当正院长的仇
- QQ会员的“十元”生意逻辑:人以群分
- [算法]柏林噪声 Perlin Noise