在列表列表中查找最小值[重复]

Posted

技术标签:

【中文标题】在列表列表中查找最小值[重复]【英文标题】:Finding minimum value in list of lists [duplicate] 【发布时间】:2019-11-10 16:14:16 【问题描述】:

我想在 Python 的列表中找到最小值。示例:

ls = [[2,3,5],[8,1,10]]

ls 中的最小值是1。我怎样才能以简单的方式获得它?

【问题讨论】:

min(elem for subls in ls for elem in subls) 到目前为止你尝试了什么?请阅读***.com/help/minimal-reproducible-example 提议的骗子 (Optimise a minimum operation on a python list of list) 与这个问题关系不大。 @cs95 对不起,我没看到,如果你发现了一个合适的骗子,一定要关闭它(我自己找不到)。这是一个更普遍的情况,但如果它对你有好处,那就对我有好处。 @jdehesa 这不是一个完美的骗局,只是更笼统一点。我会继续关闭它。 【参考方案1】:
# find the min of each sublist, then find the global min
min(map(min, ls))
# 1

# flatten `ls`, then find the min
min(y for x in ls for y in x)
# 1

# use itertools.chain to flatten `ls`
min(itertools.chain.from_iterable(ls))
# 1

ls = [[2, 3, 5], [8, 1, 10]] * 10000

%timeit min(y for x in ls for y in x)            # 7.31 ms ± 64.9 µs
%timeit min([min(l) for l in ls])                # 6.24 ms ± 56.9 µs
%timeit min(map(min, ls))                        # 5.44 ms ± 151 µs
%timeit min(min(ls, key=min))                    # 5.28 ms ± 129 µs
%timeit min(itertools.chain.from_iterable(ls))   # 2.67 ms ± 62.5 µs

【讨论】:

有骗子,但不是这个确切的问题! @DeveshKumarSingh 似乎是在尝试自我 QA,所以我发布了我认为不错的替代方案。【参考方案2】:
min_abs = min([min(l) for l in ls])

【讨论】:

你可以跳过[],它会避开临时列表。 像这样构建一个最小值列表比它需要的要浪费一点。有关时间比较,请参阅 here。【参考方案3】:

你可以试试这个:

res = min(min(ls, key=min))

【讨论】:

以上是关于在列表列表中查找最小值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

查找列表中至少相隔 x 的最小 n 值

如何从从excel文件派生的大量字典中的值列表中查找最小值和最大值

在数组中查找最小值 > 0

在数组中查找最小值 > 0

Python - 如何在列表中查找不是最小值的数字

查找列表中最小数字的索引值? [复制]