Python:函数在没有max()的情况下返回列表中的最高值?

时间:2013-10-19 17:50:48

标签: python python-2.7

我需要编写一个以数字列表作为参数的函数,并在不使用max()的情况下返回列表中的最大数字。

我试过了:

def highestNumber(l):
  myMax = 0
  if myMax < l:
    return myMax

  return l


print highestNumber ([77,48,19,17,93,90])

......以及其他一些我不记得的事情。我只需要了解如何循环列表中的元素。

3 个答案:

答案 0 :(得分:4)

def highestNumber(l):
    myMax = l[0]
    for num in l:
        if myMax < num:
            myMax = num
    return myMax


print highestNumber ([77,48,19,17,93,90])

<强>输出

93

或者你可以做这样的事情

def highestNumber(l):
    return sorted(l)[-1]

或者

def highestNumber(l):
    l.sort()
    return l[-1]

答案 1 :(得分:2)

您需要遍历所有值以确定最大值;跟踪到目前为止的最大值并在完成循环后返回

def highestNumber(l):
    myMax = float('-inf')
    for i in l:
        if i > myMax:
            myMax = i
    return myMax

此处float('-inf')是一个保证低于任何其他数字的数字,这是一个很好的起点。

for构造负责所有循环;你直接对l的元素执行此操作,i将逐个分配序列的每个元素。

您的代码忘记循环,针对0测试整个列表,如果测试失败则返回整个列表。

答案 2 :(得分:0)

用于在不使用预定义函数的情况下在列表中查找最大值

def max_len_list(temp):
    i=1
    for each in temp:
        while i < max_len:
            comp=each;
            if comp > temp[i]:
                i=i+1;
            elif temp[i] > comp:
                comp=temp[i];
                i=i+1
        return comp
list1 = [];
max_len=3;
try:
    while len(list1) < max_len :
        no = int(input("enter a number\n"));
        list1.append(no);
except:
    print "enter number not string"
max_no=max_len_list(list1);
print max_no