改进Python用户定义的最大功能

时间:2017-07-07 07:10:31

标签: python performance max

我是编程新手,我正在努力了解如何"思考"在Python中以编程方式更多。我编写了一个函数,它返回数组中最大的元素而不使用max:

def max_userdefined(array):
    """
    Finds largest value of nonempty array of numbers in O(n)
    :param: list/tuple of values
    :return: max value
    """
    try:
        assert isinstance(array, list or tuple)
        result = array[0]
        for element in array:
            if element > result:
                result = element
        return result
    except IndexError:
        return 'Please pass in a nonempty array'
    except AssertionError:
        return 'Please pass in a list or tuple'
    except TypeError:
        return 'Please make sure elements of array are all floats or ints'

如何改进上述代码?任何批评或任何人都可以推荐一个好的Pythonic风格指南。

3 个答案:

答案 0 :(得分:1)

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


print max_userdefined ([1,2,3,4,5])

<强>输出

5

或者您可以使用已排序的方式执行以下操作。

def max_userdefined(array):
    return sorted(array)[-1]

答案 1 :(得分:0)

>>> def umax(array):
    global biggest
    for num in array:
        if num > biggest:
            biggest = num


>>> biggest = int()
>>> nums = (1, 9, 6, 4, 5, 3, 2, 7, 0)
>>> umax(nums)
>>> biggest
9

答案 2 :(得分:0)

为了从列表中返回最大数字,接下来的简单算法是比较两个数字并将较大的数字保存在变量中,然后打印变量或者您可以使用排序使用python快捷方式。

  1. 使用用户定义的函数:

    def greatest_ele_list(listobj):
        greatest=listobj[0]    
        for i in range(len(listobj)):
            if listobj[i]>greatest:
               greatest=listobj[i]
            else:
               pass
        return greatest
    print greatest_ele_list([4,5,3,8,1])
    
  2. 使用sort:

    def greatest_ele_list(listobj):
        listobj2=listobj.sort()
        return listobj2[-1]
    print greatest_ele_list([4,5,3,8,1])
    

    输出:>>> 8