【问题标题】:Sorting a list of lists in by the numbers' absolute values按数字的绝对值对列表列表进行排序
【发布时间】:2019-02-13 07:16:32
【问题描述】:

在 Python 中,如果我有这种格式的输入:

例如)

[[1, 2, -3], [2, -64, 41], [-32, 5, 4]]

如何按数字的绝对值对每个列表进行排序? 括号内的列表数量取决于用户的输入。

在这种情况下,我想要输出

[[1,2,-3],[2,41,-64], [4,5,-32]]

【问题讨论】:

  • 你试过什么?还是您有问题并没有尝试就将其发送给 SO?
  • 您有一个列表列表。哪个子列表的绝对值?他们都是?总和?
  • 看起来 OP 希望每个列表元素按绝对值升序排序。

标签: python arrays list sorting absolute


【解决方案1】:

使用abs作为每个子列表的关键函数。

>>> li=[[1, 2, -3], [2, -64, 41], [-32, 5, 4]]
>>> [sorted(sl, key=abs) for sl in li]
[[1, 2, -3], [2, 41, -64], [4, 5, -32]]

【讨论】:

    【解决方案2】:

    sorted 带有一个选项key 参数,该参数告诉 Python 使用哪些值对项目进行排序。在您的情况下,您希望使用 abs 函数。

     [sorted(item, key=abs) for item in foo]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-30
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 2017-10-04
      • 2010-11-15
      • 2021-08-25
      相关资源
      最近更新 更多