我正在寻找从列表中识别大于 0 的最小值,但需要一些帮助。
谁能提供一些示例代码?
谢谢
给定的初始列表称为values
:
values = [...]
result = min(value for value in values if value > 0)
结果值存储在result
. 在这种情况下,我们使用带有过滤的生成器表达式而不是列表推导来节省O(1)
内存。
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。如果一些键是数字而另一些是字符串,或者一些是大写的,一些是小写的,你可能不会得到你期望的结果,尽管它是可以预测的。
您可以使用生成器:
def smallestPositive(lst):
return min(x for x in lst if x > 0)