您可以将自定义键函数传递给
list.sort:
x = [4,6,9,'ashley','drooks','chay','poo','may']x.sort(key=lambda v: (isinstance(v, str), v))# result:# [4, 6, 9, 'ashley', 'chay', 'drooks', 'may', 'poo']
此键函数将列表中的每个元素映射到一个元组,其中第一个值是布尔值(
True对于字符串和
False数字),第二个值是元素本身,如下所示:
>>> [(isinstance(v, str), v) for v in x][(False, 4), (False, 6), (False, 9), (True, 'ashley'), (True, 'chay'), (True, 'drooks'), (True, 'may'), (True, 'poo')]
然后使用这些元组对列表进行排序。因为
False < True,这使得整数可以在字符串之前排序。然后,将具有相同布尔值的元素按元组中的第二个值进行排序。



