有时候处理数据时,想要按照字符串中的数字的大小进行排序。

譬如,存在一组记录文件,分别为‘1.dat’,'2.dat'...

当我把该文件夹中的所有记录文件名读到一个列表中,这些字符串的排列方式为:

如何让这些字符串按照数字排列?

1、首先通过正则表达式,提取出字符串中的数字

2、排序,选择built-in函数sorted进行排序

sorted(iterable, cmp=None, key=None, reverse=False)

iterable:是可迭代类型;
cmp:用于比较的函数,比较什么由key决定;
key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项;
reverse:排序规则. reverse = True  降序 或者 reverse = False 升序,有默认值。
返回值:是一个经过排序的可迭代类型,与iterable一样。

所以说排序方式按照数字拍的话,key就要对应里面的数字。

所以,这个问题只需一句话解决:

s = ['1.dat','10.dat','5.dat']
new = sorted(s,key = lambda i:int(re.match(r'(\d+)',i).group()))
print new

得到的结果即为

对于该操作,同样可以使用list.sort(),python2.4之后,list.sort和sorted都添加了一个key参数用来指定一个函数

不同的地方是:内置sorted返回一个新的列表,而list.sort是对列表进行操作

s = ['1.dat','10.dat','5.dat']
s.sort(key = lambda i:int(re.match(r'(\d+)',i).group()))
print s

最新文章

  1. 将文件移出版本控制 (Revision Control)
  2. struts2注解
  3. 注解:【无连接表的】Hibernate双向1->N关联
  4. TypeScript Handbook 2——接口1(翻译)
  5. RTSP 协议分析
  6. iOS NSPredicate和正则表达式
  7. Windows x86 x64使用SetThreadContext注入shellcode的方式加载DLL
  8. javascript 浏览器执行断点
  9. CSU 1616: Heaps(区间DP)
  10. HTML5 appcache
  11. iOS依据字符串计算UITextView高度
  12. 字符集 ISO-8859-1(1)
  13. [array] leetcode - 48. Rotate Image - Medium
  14. iOS-FMDB事务【批量更新数据】
  15. 设计一个可拔插的 IOC 容器
  16. HTML:Browser 对象
  17. 安装redis出现cc adlist.o /bin/sh:1:cc:not found的解决方法
  18. vs2017创建支持多框架(net4.6.1;net4.6.2;netstandard2.0;netcoreapp2.0)版本
  19. (有点递归的感觉)RGCDQ--hdu--5317
  20. python set() 集合的添加删除、交集、并集、差集、交叉补集、集合的方法介绍以及使用案例

热门文章

  1. KMP初探·总结
  2. Python练习-递归二分算法
  3. php Only variables should be passed by reference 报错问题
  4. J - Borg Maze +getchar 的使用注意(二维字符数组的输入)
  5. atan2 atan
  6. ubuntu更新源列表
  7. java map遍历并删除特定值
  8. mysql优化【转】
  9. Percona XtraBackup 实现全备&增量备份与恢复【转】
  10. 芒果TV 视频真实的地址获取