在 Python 中查找列表中的最小值时如何从无限值开始?

Richard Cheng
>>> lowest_path_cost = float('inf')
>>> # pretend that these were calculated using some worthwhile algorithm
>>> path_costs = [1, 100, 2000000000000, 50]
>>> for path in path_costs:
...   if path < lowest_path_cost:
...     lowest_path_cost = path
...
>>> lowest_path_cost
1

嗨,我在这里遇到了这个问题,想知道为什么if path < lowest_path_cost: lowest_path_cost = path会在列表中生成最低值,因为它们都小于无穷大

为什么这有助于找到最低值?提前致谢。

可爱的毒药

正如@Selcuk 指出的那样(尽管我会稍微纠正一下),如果您想在一个循环中遍历所有项目,可能需要有一个初始值

你可以考虑这个问题;假设您有一个包含 1000 个数字的列表,即您无法一次查看所有数字。你如何用笔和纸找到最小的数字?其中一种方法是执行以下操作:

  1. 写下列表中的第一个数字(称为x0
  2. 检查下一个数字,x1,看看是否x1<x0
  3. 如果是这样,设置x0=x1iex1现在是新的最小数字
  4. 对所有出现的数字重复 (2)-(3)

在 python 中,这将是

#example 1)

numbers = [10,5,2,15,20....] #Long list
x0 = x[0] #first number
for x1 in numbers[1:]: #for all the remaining numbers [5,2,15,20...]
    if x1 <x0: #check if the current number is less than the smallest number
          x0 = x1 #if it is - update the smallest number to x1

但如果你不想使用列表中的第一个数字来初始化,你可以用你知道数量大于初始化任何数量的列表,它是inifinity


#example 2)
numbers = [10,5,2,15,20....] #Long list
x0 = float("int") # 'first' number
for x1 in numbers: #for all the remaining numbers- note we have removed the slicing [1:]
    if x1 <x0: #check if the current number is less than the smallest number
          x0 = x1 #if it is - update the smallest number to x1

然后你可能会问 - 为什么它必须是无穷大?让我们尝试举一个大数字的例子,比如 50.000。如果列表中的所有项目都大于 50.000,我们将得到列表中最小的项目是 50.000,这是错误的

numbers = [100_000,200_000] #List with big numbers
x0 = 50_000 # Chose a too small number for initial-value
for x1 in numbers: #for all numbers
    if x1 <x0: #None of the numbers in the list fulfill this check i.e x0 is never updated!
          x0 = x1 
print(x0)
#50_000

因此,唯一被视为所有列表的有效初始值的“数字”

a) 列表中的第一个数字(示例 1)

b) 无穷大(例 2)

注意,例如2并没有当我们在列表中只有一个项目打破-如果我们在清单零个项目它打破。

但幸运的是,我们可以通过min(numbers)@juanpa.arrivillaga 所说的那样调用来避免这一切

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

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

从列表中打印最小值(PYTHON)

通过Python在列表中的特定位置查找绝对最大值或最小值

在Python的列表模式中查找最小值和最大值

在没有列表的python中查找最大值和最小值

查找最小值并从Python中的多个列表中弹出

Python在具有两个条件的嵌套列表中查找最小值

在Python DataFrame中查找最小值列和最小值列名称

获取Python中数字列表中的立即最小值

Python:在嵌套字典中查找最小值

在Python数组中连续查找最小值索引

使用python查找数组簇中的最小值

python迭代查找字典中的最小值

在 Python 中查找圖的最小值的坐標

如何获得预定义集合列表中的最小值(在 python 3.x 中)?

如何在python中的多个列表中的矩阵中找到最小值?

如何在python中确定元组列表的列中的最小值

如何从Python-3的DataFrame中查找前N个最小值

查找列表的最大值/最小值时,管理空列表/无效输入(Python)

Python中索引二维列表的最小值

根据python中的绝对最小值过滤嵌套列表

在python中获取列表最小值的索引

在元组列表中的元组子集中查找第二个值的最小值(python)

在python中查找列表的最小值和最大值。我得到了 TypeError: 'int' 对象不可调用

如何在python中获取日期时间对象列表并找出最小值

从 Python 中的列表列表中获取最小值和最大值的最快方法?

在 Python 中查找 Pandas 的每个单元格中的最大值/最小值

在python中的字典(JSON)中查找最大值和最小值

在元组python中查找字典中的最大值和最小值