在 Python 中查找大于 0 的列表中的最小值

Python 中要在列表中查找大于 0 的最小值:

  1. 使用生成器表达式迭代列表。
  2. 检查每一项是否大于0并返回结果。
  3. 将结果传递给 min() 函数。
my_list = [-5, 14, 4, -10, 7]

# ✅ find min value in list greater than 0
min_gt_0 = min(number for number in my_list if number > 0)
print(min_gt_0)  # 👉️ 4

# ✅ get the index of min value greater than 0
print(my_list.index(min_gt_0))  # 👉️ 2

我们使用生成器表达式来迭代数字列表。

生成器 表达式用于对每个元素执行某些操作或选择满足条件的元素子集。

在每次迭代中,我们检查当前项目是否大于 0 并返回结果。

最后一步是将仅包含大于 0 的数字的生成器对象传递给 min() 函数。

min 函数返回可迭代对象中的最小项或两个或多个参数中最小的一个。

print(min(14, 4, 7))  # 👉️ 4

如果需要获取列表中大于0的最小值的索引,使用 list.index() 方法。

my_list = [-5, 14, 4, -10, 7]

min_gt_0 = min(number for number in my_list if number > 0)
print(min_gt_0)  # 👉️ 4

print(my_list.index(min_gt_0))  # 👉️ 2

list.index() 方法返回其值等于提供的参数的第一个项目的索引。

请注意 ,如果列表中没有任何项大于 0,则 min() 函数会引发错误。

my_list = [-5, -1]

# ⛔️ ValueError: min() arg is an empty sequence
min_gt_0 = min(number for number in my_list if number > 0)

在 Python 中查找大于 0 的列表中的最小值

在这种情况下,min() 函数会使用一个空的生成器对象进行调用,因此会引发 ValueError。

我们可以通过在调用 min() 时提供默认值来处理错误。

my_list = [-5, -1]

min_gt_0 = min(
    (number for number in my_list if number > 0),
    default=None
)

print(min_gt_0)  # 👉️ None

min() 函数采用可选的默认关键字参数,用于指定在提供的可迭代对象为空时返回的值。

result = min([], default=0)

print(result)  # 👉️ 0

如果可迭代对象为空且未提供默认关键字参数,则该函数会引发 ValueError