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

Posted

技术标签:

【中文标题】Python - 如何在列表中查找不是最小值的数字【英文标题】:Python - how to find numbers in a list which are not the minimum 【发布时间】:2013-08-12 11:30:04 【问题描述】:

我有一个列表S = [a[n],b[n],c[n]],对于n=0,列表S 的最小值是'a'。鉴于我知道最小值,如何选择值 bc?我正在编写的代码通过n 的多次迭代运行,我想检查循环中给定迭代中不是最小值的元素。

Python 2.7.3,32 位。麻木 1.6.2。 Scipy 0.11.0b1

【问题讨论】:

所以基本上你想要实现的是,对于每个元组(a, b, c) 选择bc 假设bc 大于a,对吧? (假设元组已经排序) 是的,但我无法知道最小值将在哪个索引中,除非每次迭代我都可以订购它们? 既然您知道最小值,假设当前最小值存储在 current_minimum 中,一个简单的 [x for x in my_list if x > current_minimum] 就可以解决问题。 【参考方案1】:

如果你可以将整个列表展平成一个numpy数组,那么使用argsort,argsort的第一行会告诉你哪个数组包含最小值:

a = [1,2,3,4]
b = [3,-4,5,8]
c = [6,1,-7,12]
S = [a,b,c]
S2 = np.array(S)
S2.argsort(axis=0)
array([[0, 1, 2, 0],
       [1, 2, 0, 1],
       [2, 0, 1, 2]])

【讨论】:

【参考方案2】:

也许你可以做类似的事情

S.sort()
S[1:3]

这就是你想要的?

【讨论】:

以上是关于Python - 如何在列表中查找不是最小值的数字的主要内容,如果未能解决你的问题,请参考以下文章

Python二分搜索类函数,用于查找排序列表中大于特定值的第一个数字

在列表中查找具有值的最小字典键的 Pythonic 方法?

在 Python 中查找最小值或最大值的值的索引

Python:对于每个列表元素,在列表中应用一个函数

markdown 如何查找列表中的最小数字

Python列表查找具有接近值的元素