列表中字符串按照某种规则排序的方法(python) 您所在的位置:网站首页 怎么替换列表中的元素和数字 列表中字符串按照某种规则排序的方法(python)

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

2023-12-19 20:34| 来源: 网络整理| 查看: 265

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

譬如,存在一组记录文件,分别为‘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是对原列表进行操作,因此sort()函数比sorted()函数效率要高,因为每次排序sorted()函数都要创建一个新的对象(列表),而创建一个新的对象是有时空开销的。

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

返回结果:

 

 

列表中字符串按照某种规则排序的方法(python) - 禅在心中 - 博客园, 再此基础上做了修改和补充。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有