最快的Alpha列表排序方式

时间:2018-10-11 16:05:51

标签: python python-3.x sorting list-comprehension

我有一个简单的列表,其中的数字是字符串:

simple_list = ['1','2','3','4','5','K','P']

我想先按字母排序,然后按数字排序。

当前我正在做

# Probably a faster way to handle this
alpha_list = [x for x in simple_list if not x.isnumeric()]
grade_list = [x for x in simple_list if x.isnumeric()]
# Put the alpha grades at the beginning of the grade_list
if alpha_list:
    grade_list = sorted(alpha_list) + sorted(grade_list)

我敢肯定有一种更快的方式来处理此问题-我似乎找不到它。

我当前得到的结果是正确的['K','P','1','2','3','4','5']

我只是想知道是否有一种方法可以压缩所有这些内容,而这种方法比多重列表理解更有效。

1 个答案:

答案 0 :(得分:6)

您可以使用返回str.isdigit()测试元组和字符串的键函数对列表进行排序,如果发现字符串是数字,则将其转换为整数:

sorted(simple_list, key=lambda c: (c.isdigit(), int(c) if c.isdigit() else c))

这将返回:

['K', 'P', '1', '2', '3', '4', '5']