如何编写一个从列表中返回大于0的最小值的函数?

时间:2013-07-19 21:13:38

标签: python

我希望从列表中识别出大于0的最小值,但需要一些帮助。

任何人都可以提供一些示例代码吗?

由于

3 个答案:

答案 0 :(得分:4)

给定名为values的初始列表:

values = [...]
result = min(value for value in values if value > 0)

结果值存储在result中。在这种情况下,我们使用生成器表达式和列表推导的instead 过滤来节省内存O(1)内存。

答案 1 :(得分:3)

def smallest_value_greater_than_0(numbers):
    return min(num for num in numbers if num > 0)

根据您的评论中的要求,如果您有字典并且想要返回具有最小值的项目的键和值:

def smallest_value_greater_than_0(numbers):
    value, key = min((v, k) for k, v in numbers.iteritems() if v > 0)
    return key, value

numbs = dict(A=2, B=3, C=0)
key, value = smallest_value_greater_than_0(numbs)     # key="A", value=2

(在Python 3.x中,只需使用numbers.items()而不是numbers.iteritems()。另请注意,在Python 3中,所有键应该是相同的类型。)

请注意,如果多个条目具有相同的值,则将使用Python的排序顺序返回具有最低键的条目。例如,如果A = 1,B = 3,C = 0,D = 1,您将得到A = 1,而不是D = 1。如果某些键是数字而其他键是字符串,或者某些键是大写的,而某些键是小写的,则可能无法获得预期的结果,尽管它是可预测的。

答案 2 :(得分:0)

您可以使用生成器:

def smallestPositive(lst):
    return min(x for x in lst if x > 0)