我有一个简单的列表,其中的数字是字符串:
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']
我只想知道是否有一种比多个列表推导更有效的压缩方法。
.sort()
方法,它会就地排序,而不是使用sorted
方法创建一个新列表。 - mad_sorted(arr, key=lambda x: mapping[x])
。本质上,您正在重新创建基于字符串排序的ASCII表。接下来的步骤是创建一个哈希函数,它记住这个新的排序顺序,这将使您能够操作更长的字符串。 - I'll Eat My Hat