在数组> 0中查找最小值

use*_*499 15 python search list min

我期待找到数组中的最低正值及其在列表中的位置.如果列表中的值重复,则只关注FIRST实例.这就是我所拥有的,它包括我想要的但包括0.

print "Position:", myArray.index(min(myArray))
print "Value:", min(myArray)
Run Code Online (Sandbox Code Playgroud)

例如,如果,

myArray = [4, 8, 0, 1, 5]

然后位置:2,值:0

我希望它呈现位置:3,价值:1

Ffi*_*ydd 34

您可以使用生成器表达式min.这将设置ma大于0 的最小值.然后用于list.index查找此值第一次出现的索引.

a = [4, 8, 0, 1, 5]

m = min(i for i in a if i > 0)

print("Position:", a.index(m))
print("Value:", m)
# Position: 3
# Value: 1
Run Code Online (Sandbox Code Playgroud)


the*_*eye 10

您可以像这样使用min功能和enumerate功能

result = min(enumerate(a), key=lambda x: x[1] if x[1] > 0 else float('inf'))
print("Position : {}, Value : {}".format(*result)
# Position : 3, Value : 1
Run Code Online (Sandbox Code Playgroud)

这样可以确保,如果值大于0,则使用该值进行最小值比较,否则使用最大可能值(float('inf')).

由于我们与项的实际索引一起迭代,因此我们不必使用另一个循环来查找实际索引.

  • 我第一次看到使用枚举这种方式,很棒的提示! (2认同)