查找值列表的最小值和最大值,而不排序或使用任何内置函数或库

时间:2017-10-16 17:25:28

标签: python function max min minimum

我需要找到值列表的最小值,但我禁止使用任何内置函数或库。我被允许使用if else或elif,但这就是范围。

我必须使用基本操作符和(我想?)我自己的直觉来解决这个问题。

不幸的是,我不是那么直观,无论我使用if else语句的组合是什么,或者< >运营商,我无法让它发挥作用。

我是python的新手,我的老师几乎没有帮助描述如何做到这一点(除了定义运算符。这就是他所做的一切)。

所以基本上我有一个三个整数的列表,我必须找到这三个整数的最小值和最大值(还要找到其他一些东西,但让我们保持这个简单)。我必须使用函数来定义整数和单独的函数来定义列表的最小值和最大值。

我有定义整数的功能,这很容易,现在我坚持这个:

def determine_min_value(a,b,c):
    print ("The minimum value is {}.".format(c < (b < a)))

a,b和c是变量(num1,num2,num3)

输出“最小值为False。”如果False是一个非常小的数字,那么这将是很好的,也是一个输入变量;这显然不是。

我完全清楚.format(c&lt;(b&lt; a))不会给我我想要的东西,但那是我最近的最后努力。就像我说的那样,我正在尝试其他声明,但我也无法解决这些问题。

我根本不知道从哪里开始,任何输入都会非常感激。另外我知道你想说“只要把它们放在一个列表中并使用min(1)”但是再次,我不被允许。我只想做到这一点。

3 个答案:

答案 0 :(得分:0)

由于您提及值列表,您可以通过递归来实现

import numpy as np

def mymin(lst):
    if not lst:
        return np.inf 
    head = lst[0]
    tail = mymin(lst[1:])
    return head if head < tail else tail

它做什么

  • 列表的最小值是第一个元素,或者是其余的最小值
  • 忽略空列表(通过具有无限值)

但是,请记住它在python中效率不高

答案 1 :(得分:0)

编辑:由于你不能使用reduce(),你可以按如下方式内联三个整数:

maximum = lambda x, y, z: x if x > (y and z) else y if y > z else z
maximum(1, 5, 7)

如果你真的想为了一个教授而避免使用lambda那么你可以传统上写它:

def maximum (x, y, z):
    if x > y and z:
        return x
    elif y > z:
        return y
    else:
        return z

当输入比例非常大时扩展上述功能最好实现使用名为reduce的内置函数(特别是如果你试图做除了检查max或min之外的其他事情,这显然是一个内置的功能)。

from functools import reduce

def check_greater(a,b):
    if a > b:
        return b
    else:
        return a

number_list = [1,6,3,8,5,78,4,23,9]

minimum = reduce(check_greater, number_list)

这会将check_greater()函数应用于列表中的每对元素,并且会不断为每对元素返回一个值,对应的值更低。

将比较前1和6。由于1较低,因此将返回它们代替这两个值。现在将比较1和3。同样,由于它较低,因此将返回以替换这两个值。也许我应该在中间某处嵌套1以使其更明显但是无论数字列表中的最小值落在哪里,reduce函数将采用整个可迭代并根据您传递的函数返回单个值。第一个论点。

请注意,您可以使用最大值执行相同操作,只需在check_greater()函数的return语句中切换a和b。

答案 2 :(得分:0)

我工作了一段时间,结束了

<Directory /www/somefolder>
    Options -Indexes FollowSymLinks
    AllowOverride None
</Directory>

工作得很好。如果没有我在这里提供的信息,我就无法做到,所以非常感谢你们!