如何对含有None的Python列表进行排序?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (87)

我有一个包含“None”的列表,例如:

>>> 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方式来说,是否有一种方法不需要重新创建wheel就能使列表排序,但是列表末尾没有值,如下所示:

[1, 2, 3, 4, 5, 7, None]
提问于
用户回答回答于
>>> 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元素将是第一位的(因为False < True),然后按值进行排序。

用户回答回答于

试试这个:

sorted(l, key=lambda x: float('inf') if x is None else x)

因为无穷大于所有整数,None永远排在最后。

扫码关注云+社区

领取腾讯云代金券