Это может быть простой вопрос, но, скажем, у нас есть массив:
a = [0,10,20]
Какой самый простой способ получить наименьшее значение, которое больше 0?. В этом случае это будет 10.
Я могу попробовать это без использования numpy.
def findValue(): a = [0,10,5,20] a.sort() noToCheck = 0 for i in a: if i > noToCheck : print("Found value: ", i) break findValue()
Или min на генераторе:
min
min(x for x in a if x > 0)
Пример :
a = [0,10,20] print(min(x for x in a if x > 0)) # 10
Не красиво
a = [0, 10, 20] def find_lowest_num(a): lowest_num = None for element in a: if lowest_num is None and element > 0: lowest_num = element elif lowest_num is None and element == 0: pass else: if element < lowest_num and element > 0: lowest_num = element return lowest_num print(find_lowest_num(a))
Поскольку вы включили Numpy в свои теги, я предполагаю, что вы согласны с решением с Numpy?
import numpy as np a = np.array([0,10,20]) np.min(a[a > 0])
Out [1]: 10
Вы можете использовать функцию min() с клавишей:
min()
min(a, key=lambda x: float("inf") if x<=0 else x)