我有一个同构的无对象列表,但它可以包含任何类型的值.例:
>>> l = [1, 3, 2, 5, 4, None, 7]
>>> sorted(l)
[None, 1, 2, 3, 4, 5, 7]
>>> sorted(l, reverse=True)
[7, 5, 4, 3, 2, 1, None]
Run Code Online (Sandbox Code Playgroud)
有没有办法没有重新发明轮子获取通常为python方式排序的列表,但列表末尾没有值,如下所示:
[1, 2, 3, 4, 5, 7, None]
Run Code Online (Sandbox Code Playgroud)
我觉得这里可以使用"key"参数进行一些技巧
And*_*ark 91
>>> l = [1, 3, 2, 5, 4, None, 7]
>>> sorted(l, key=lambda x: (x is None, x))
[1, 2, 3, 4, 5, 7, None]
Run Code Online (Sandbox Code Playgroud)
这为列表中的每个元素构造一个元组,如果值是None带有be的元组(True, None),如果值是其他任何元素(False, x)(x值在哪里).由于元组是逐项排序的,这意味着所有非None元素将首先(自False < True),然后按值排序.
Set*_*ton 16
试试这个:
sorted(l, key=lambda x: float('inf') if x is None else x)
Run Code Online (Sandbox Code Playgroud)
由于无穷大大于所有整数,None因此总是放在最后.