Python 如何按升序对字符串列表(包含数字)排序

Python 如何按升序对字符串列表(包含数字)排序,python,string,list,sorting,Python,String,List,Sorting,我知道这是一个非常基本的问题,但从我搜索时看到的答案来看,我没有找到足够好的答案 使用mylist=os.listdir时收到的文件名如下: 我想按升序对列表进行排序,如下所示: ['file.0', 'file.1', 'file.2', 'file.3', 'file.10', 'file.100'] 我尝试使用mylist.sort,但它没有任何更改就离开了列表。排序函数也不做任何更改 一种解决方法是将数字从字符串中分离出来,并将其转换为新数组中的整数: [0, 1, 10, 100

我知道这是一个非常基本的问题,但从我搜索时看到的答案来看,我没有找到足够好的答案

使用mylist=os.listdir时收到的文件名如下:

我想按升序对列表进行排序,如下所示:

['file.0', 'file.1', 'file.2', 'file.3', 'file.10', 'file.100']  
我尝试使用mylist.sort,但它没有任何更改就离开了列表。排序函数也不做任何更改

一种解决方法是将数字从字符串中分离出来,并将其转换为新数组中的整数:

[0, 1, 10, 100, 2, 3]  
然后对它们进行排序:

[0, 1, 2, 3, 10, 100]  
然后我需要一个函数来处理文件一,

但是有没有更好的方法呢

我注意到Windows做了这件事,我想他们做这件事时有点刺痛:

我建议使用拆分“.”,它将列表中的元素拆分到它找到的位置。。如果随后将最后一个元素强制转换为int,则可以将其用作排序的键:

sorted(mylist, key = lambda x: int(x.split('.')[-1]))
返回:

['file.0', 'file.1', 'file.2', 'file.3', 'file.10', 'file.100']

应该指出的是,它实际上是在对它进行排序,但是因为它们是字符串,所以file.10位于file.2之前,因为1小于2,所以0是不相关的。
['file.0', 'file.1', 'file.2', 'file.3', 'file.10', 'file.100']