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'
。鉴于我知道最小值,如何选择值 b
和 c
?我正在编写的代码通过n
的多次迭代运行,我想检查循环中给定迭代中不是最小值的元素。
Python 2.7.3,32 位。麻木 1.6.2。 Scipy 0.11.0b1
【问题讨论】:
所以基本上你想要实现的是,对于每个元组(a, b, c)
选择b
和c
假设b
和c
大于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 - 如何在列表中查找不是最小值的数字的主要内容,如果未能解决你的问题,请参考以下文章