在列表中查找最大数量的功能

时间:2019-03-17 20:33:35

标签: python

我正在尝试创建一个在列表中查找最大数量的函数(不使用max()命令)

但是我的功能对负数不起作用吗?我该如何解决?谢谢!例如,在我的第二次打印测试中,它将打印0而不是-3。

def my_max(data):
    """finds max number in list"""
    maximum = 0 
    for num in data:
        if num > maximum:
            maximum = num
    return maximum 
print(my_max([11, 99, 3, -6]))
print(my_max([-3, -5, -9, -10]))

3 个答案:

答案 0 :(得分:2)

这是因为您正在使用已经大于-3的任意值(零)来初始化最大变量。尝试使用列表最大=数据[0]

中的第一个元素对其进行初始化

答案 1 :(得分:1)

您有2种解决方案:

  • 将一个非常大的负数作为初始最大值,例如-10000000(在任何情况下都不起作用,并且很丑陋)或-math.inf(在任何情况下都可以工作,但仍然很丑陋)
  • 将列表的第一项设置为初始最大值(data[0])(在任何情况下均适用)。

    第二个解决方案的说明:如果列表中的第一项是最大的一项,则条件将始终解析为False,并且将返回此初始最大值,或者将其替换为另一个列表中更大的项目,最后返回最大的项目。

答案 2 :(得分:0)

Python中比较模糊的数字类型之一是math.inf-无限。可以通过以下方式产生:

from math import inf,然后使用inf-inf(负无穷大),

float("inf")表示正无穷大,float ("-inf")表示负无穷大