Python字符串列表按长度与数字规则排序详解

追风的人
追风的人
发布时间:2026-10-13 | 5人浏览过
原创

本文介绍Python中对字符串列表进行排序的两种常见场景:按字符串长度排序和按字符串内嵌数字大小排序。通过内置sorted()和list.sort()方法,结合lambda表达式与key参数,可灵活实现自定义排序逻辑。示例展示了如何提取文件名中的数字并按数值大小排列,适用于数据清洗与文件管理场景。

Python字符串列表按长度排序

本文将演示如何在Python中对字符串列表依据长度进行排序。

myList = ['青海省','内蒙古自治区','西藏自治区','新疆维吾尔自治区','广西壮族自治区']

第一步是获取列表中每个字符串的长度。

随后进行排序,可以选择使用内置的sorted()函数或列表对象的sort()方法。

需要注意的是,内置sorted()函数会返回一个全新的排序后列表,而list.sort()方法则是直接对原列表进行原地修改。

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

sorted()函数的参数说明如下: iterable:表示可迭代对象; cmp:用于比较的函数,具体比较逻辑由key参数决定; key:指定一个函数,用于提取列表元素中用于排序的关键字,默认为None,即迭代集合中的每一项; reverse:排序规则,reverse=True表示降序,reverse=False表示升序,默认为False。

该函数的返回值是一个经过排序的可迭代对象,其类型与输入的iterable保持一致。


myList = ['青海省','内蒙古自治区','西藏自治区','新疆维吾尔自治区','广西壮族自治区'] 
myList1 = sorted(myList,key = lambda i:len(i),reverse=True) 
print(myList1) 
myList = ['青海省','内蒙古自治区','西藏自治区','新疆维吾尔自治区','广西壮族自治区'] 
myList.sort(key = lambda i:len(i),reverse=True) 
print(myList)

运行结果如下所示:


['新疆维吾尔自治区', '广西壮族自治区', '内蒙古自治区', '西藏自治区', '青海省'] 

按字符串内数字大小排序

此外,下面介绍列表字符串按照特定规则排序的方法(Python)。

在处理数据时,有时需要按照字符串中包含的数字大小来进行排序。

例如,有一组记录文件,文件名分别为‘1.dat'、'2.dat'等。

当把该文件夹中的所有记录文件名读取到一个列表中时,这些字符串的默认排列顺序可能不符合数字大小逻辑。

那么,如何使这些字符串按照数字大小进行排列呢?

首先,利用正则表达式从字符串中提取出数字部分。

接着进行排序,这里选择内置函数sorted()来实现。

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

sorted()函数的参数说明如下: iterable:表示可迭代对象; cmp:用于比较的函数,具体比较逻辑由key参数决定; key:指定一个函数,用于提取列表元素中用于排序的关键字,默认为None,即迭代集合中的每一项; reverse:排序规则,reverse=True表示降序,reverse=False表示升序,默认为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()方法。自Python 2.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 

总结

以上内容介绍了Python中字符串列表按长度排序的方法,希望对大家有所帮助。如有任何疑问,欢迎留言,小编会及时回复。感谢大家对本站的支持! 如果本文对您有帮助,欢迎转载,请注明出处,谢谢!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表