-5

我正在寻找从列表中识别大于 0 的最小值,但需要一些帮助。

谁能提供一些示例代码?

谢谢

4

3 回答 3

4

给定的初始列表称为values

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

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

于 2013-07-19T21:15:29.123 回答
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。如果一些键是数字而另一些是字符串,或者一些是大写的,一些是小写的,你可能不会得到你期望的结果,尽管它是可以预测的。

于 2013-07-19T21:15:24.453 回答
0

您可以使用生成器:

def smallestPositive(lst):
    return min(x for x in lst if x > 0)
于 2013-07-19T21:15:25.247 回答