zoukankan      html  css  js  c++  java
  • Python--列表中字符串按照某种规则排序的方法


    作者:禅在心中 

    出处:http://www.cnblogs.com/pinking/ 

    本文版权归作者和博客园共有,欢迎批评指正及转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

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

    譬如,存在一组记录文件,分别为‘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就要对应里面的数字。

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

    1
    2
    3
    = ['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是对列表进行操作

    1
    2
    3
    = ['1.dat','10.dat','5.dat']
    s.sort(key = lambda i:int(re.match(r'(d+)',i).group()))
    print s
     
  • 相关阅读:
    Nginx源码编译安装
    nginx版本对比
    k8s中subpath挂载单个文件报错处理
    C++ array 数组函数
    洛谷 P2141
    c++ set容器
    字符串中输出每一个元素的方法
    string中的pop_back()函数
    如何去掉前导0 在字符串中 算法
    pat 乙级1074
  • 原文地址:https://www.cnblogs.com/wangyanyan/p/11270572.html
Copyright © 2011-2022 走看看