【问题标题】:Find minimum values of both "columns" of list of lists查找列表列表的两个“列”的最小值
【发布时间】:2021-07-28 16:44:09
【问题描述】:

给定一个类似下一个的列表:

foo_list = [[1,8],[2,7],[3,6]]

我在Tuple pairs, finding minimum using pythonminimum of list of lists 可以使用如下生成器找到列表列表中具有最小值的对:

min(x for x in foo_list)

返回

[1, 8]

但我想知道是否有类似的方法来返回列表“列”的两个最小值:

output = [1,6]

我知道这可以使用 numpy 数组来实现:

output = np.min(np.array(foo_list), axis=0)

但我有兴趣找到一种使用生成器的方法(如果可能的话)。

提前致谢!

【问题讨论】:

    标签: python list


    【解决方案1】:
    [min(l) for l in zip(*foo_list)]
    

    返回 [1, 6]

    zip(*foo_list) 获取列表转置,然后我们在两个列表中找到最小值。 感谢@mousetail 的建议。

    【讨论】:

      【解决方案2】:

      您可以为此使用两个min()。喜欢-

      min1 = min(a for a, _ in foo_list)
      min2 = min(b for _, b in foo_list)
      print([min1, min2])
      

      这样可以吗?但我认为如果你不想使用第三方库,你可以使用普通的旧循环,这样会更有效。

      【讨论】:

      • 谢谢,我考虑过,但我想知道这是否可以在一行中实现(我可能想多了)
      猜你喜欢
      • 2021-01-25
      • 2012-04-18
      • 1970-01-01
      • 2021-07-02
      • 2019-11-10
      • 1970-01-01
      • 2020-11-28
      • 2016-05-22
      • 2013-04-08
      相关资源
      最近更新 更多