在列表列表中查找最小值[重复]
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))
【讨论】:
以上是关于在列表列表中查找最小值[重复]的主要内容,如果未能解决你的问题,请参考以下文章