Python排序列表,末尾无

Nikolai Golub:

我有一个无对象的同类对象列表,但是它可以包含任何类型的值。例:

>>> 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]

有没有一种方法可以不重新发明轮子,以使列表按通常的python方式排序,但是列表的末尾具有None值,如下所示:

[1, 2, 3, 4, 5, 7, None]

我觉得这里可以用“关键”参数一些技巧

安德鲁·克拉克(Andrew Clark):
>>> l = [1, 3, 2, 5, 4, None, 7]
>>> sorted(l, key=lambda x: (x is None, x))
[1, 2, 3, 4, 5, 7, None]

如果值是None带有be的元组,则为列表中的每个元素构造一个元组。(True, None)如果值是其他任何值(False, x)x在哪里)。由于元组是逐项排序的,所以这意味着所有非None元素都将首先出现(因为False < True),然后再按值进行排序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章