列表中字符串按照某种规则排序的方法(python)

列表中字符串按照某种规则排序的方法(python)

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

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

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

<span>列表中字符串按照某种规则排序的方法(python)</span>

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

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

 得到的结果即为

<span>列表中字符串按照某种规则排序的方法(python)</span>

 对于该操作,同样可以使用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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119496.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Web服务器搭建步骤(Win10)

    Web服务器搭建步骤(Win10)1.在“开始”菜单处打开“控制面板”。2.点击“程序”。3.点击“启动或关闭Windows功能”。4.对“InternetInformationServices”下的所有选项打勾✔,点击“确定”。5.电脑会自动搜索文件下载。6.打开网址“http://localhost/”,出现如图的界面即搭建成功。…

    2022年5月28日
    33
  • pycharm新建python文件默认抬头_如何安装python环境

    pycharm新建python文件默认抬头_如何安装python环境#!/usr/bin/envpython#-*-coding:utf-8-*-#@Time:${DATE}${TIME}#@Name:peilun#@File:${NAME}.py#@Software:${PRODUCT_NAME}

    2025年5月27日
    1
  • 领域建模与数据库建模[通俗易懂]

    首先两者比较: 我下面是引用的别人的文章,并且感觉有句话很好,不过除了这句话其它的话都不是很好,哈哈:有些人就把问题归结于Java语言本身,睡不着觉怪床歪。 我们知道:一个软件从无到有需要经过如下几个阶段:分析、设计、编程、调试、部署和运行。   编程阶段我们通常使用Java/.NET这样面向对象语言工具,可以带来很多设计上的好处,但是也存在一个奇怪的现象:很多程序员虽然在

    2022年4月16日
    36
  • Leetcode 差分数组的应用「建议收藏」

    Leetcode 差分数组的应用「建议收藏」题目1解法这个题目普通解法参见这里不过这里面的做法都是nlog(n)的。实际上利用差分数组,这道题目可以有O(n)做法这边简单提一下差分序列,对于一个数组,差分序列的定义是数组中前一个值和后一个值的差值形成的新数组。我们在原数组某个区间加上一个统一的值,正常的做法需要在原数组每个位置去叠加,而体现在差分数组上只需要对区间两端的值进行变化即可,差分数组的prefixsum其实就是原数组。比如原数组为:num=[1,1,1,2,2,3]差分数组为:diff_num=[1,0,0,1,0,

    2022年6月3日
    36
  • 剑指java面试offer直通车_面试后一般多久给offer

    剑指java面试offer直通车_面试后一般多久给offer这是本人整理的数万字的面试笔记,基本上涵盖了Java领域的所有技术栈,本人也是凭借这份面试笔记斩获了近10个offer,面试成功率高达80%。当然这份笔记是我根据自身的经验和技术栈整理的,自己觉得很重要的或者记不清的就会记录记录下来,面试被问到的时候也有回答的思路。现在共享给大家,希望对准备面试的小伙伴有帮助。1.微服务1.1主流注册中心对比zookeeper:zookeeper作为注册中心主要是因为它具有节点变更通知功能。只要客户端监听相关服务节点,服务节点有所变更就能及时的通知到监

    2025年12月8日
    4
  • iOS之个人工作常用知识

    iOS之个人工作常用知识

    2021年9月11日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号