【问题标题】:Python find the minimum using for loops? [closed]Python使用for循环找到最小值? [关闭]
【发布时间】:2014-02-17 01:16:51
【问题描述】:

我不知道如何让 python 在列表中“扫描”一个候选者,然后再次返回循环以找到另一个候选者。

    candidate = 0
    maximum = 0
    a = [12, 10, 50, 100, 24]
    for i in len(s):
        for j in range(len(s)):

【问题讨论】:

  • 你为什么使用两个循环?找到未排序数组的最小值是 O(n) 时间。
  • len(s) 中的s 是什么?
  • 另外,无论s 是什么,len(s) 几乎可以肯定是一个数字,所以for i in len(s) 将是一个TypeError。你在下一行得到了一个范围内的循环,这个有什么不同? (虽然真的,for i in a: for j in a: 要简单得多,根本不用考虑索引。)
  • 如果这是一个作业,也许发布作业的全文而不是你的摘要。显然你并不完全理解这个任务,或者你不会问这个问题,但希望这里的人会。

标签: python loops minimum


【解决方案1】:

您可以编写自己的函数来处理任何类型的迭代,包括生成器:

def my_minimum(iterable):
    iterable = iter(iterable)
    minimum = iterable.next()
    for i in iterable:
        if i < minimum:
            minimum = i
    return minimum

>>> a = [12, 10, 50, 100, 24]
>>> my_minimum(a)
10

需要生成器:

>>> b = xrange(20)
>>> my_minimum(b)
0

但是,正如其他人提到的,Python 有自己的内置 min 函数,所以我希望这个问题纯粹是学术性的。

>>> min(a)
10

这也需要生成器:

>>> b = xrange(20)
>>> min(b)
0

【讨论】:

    【解决方案2】:

    您可以使用内置的min 函数来执行此操作

    a = [12, 10, 50, 100, 24]
    print min(a)
    

    如果你真的想使用循环,

    minimum = a[0]
    for number in a:
        if minimum > number:
           minimum = number
    print minimum
    

    您可以使用max 函数查找列表中的最大值。

    【讨论】:

      【解决方案3】:

      使用内置的minmax 函数,如下所示:

      >>> min([12,10,50,100,24])
      10
      >>> max([12,10,50,100,24])
      100
      

      【讨论】:

        猜你喜欢
        • 2016-08-05
        • 2020-03-04
        • 1970-01-01
        • 2018-09-21
        • 2015-04-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-18
        相关资源
        最近更新 更多