Python 3.x 对包含数值的列表进行排序

Python 3.x 对包含数值的列表进行排序,python-3.x,Python 3.x,我有一张名单叫 my_list=['C3', 'D10', 'A14', 'C103', 'B16', 'C9','AD24'] 我想对这个列表进行排序,并有如下输出 my_list=['A14', 'AD24', 'B16', 'C3', 'C9', 'C103', 'D10'] 我不确定在我的关键功能中需要实现什么逻辑 def my_func(x):

我有一张名单叫

my_list=['C3', 'D10', 'A14', 'C103', 'B16', 'C9','AD24']
我想对这个列表进行排序,并有如下输出

my_list=['A14', 'AD24', 'B16', 'C3', 'C9', 'C103', 'D10']
我不确定在我的关键功能中需要实现什么逻辑

def my_func(x):                                                                   
    result = ''                                                                   
    my_str = ''.join([str(ord(elem)) if elem.isalpha() else elem for elem in x])  
    for elem in my_str:                                                           
        result += elem                                                            
    return result                                                                 
然后,当我尝试这一点,我没有得到想要的输出

sorted(my_list, key=my_func)               
['A14', 'AD24', 'B16', 'C103', 'C3', 'C9', 'D10']
你知道我哪里出错了吗

import re

my_list=['C3', 'D10', 'A14', 'C103', 'B16', 'C9']

a = re.compile('([0-9]+)')

def sort(b):
    return [int(text) if text.isdigit() else text.lower()
            for text in re.split(a, b)]

my_list.sort(key=sort)
print (my_list)
样本输出:

['A14', 'B16', 'C3', 'C9', 'C103', 'D10']

我想这可能行得通。这是自然排序,我在练习代码文件中的某个地方有此功能。

您可以像这样使用
natsort
模块

from natsort import natsorted, ns
x = ['C3', 'D10', 'A14', 'C103', 'B16', 'C9','AD24']
y = natsorted(x, alg=ns.IGNORECASE)
print(y)
将输出:

['A14', 'AD24', 'B16', 'C3', 'C9', 'C103', 'D10']

开头是否只有一个字符,或者它是可变的?可能有数量可变的字符,如BB2027