改进Python用户定义的max函数

改进Python用户定义的max函数,python,performance,max,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 isi

我是编程新手,正在尝试理解如何用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风格的指南,欢迎批评

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])
或者,您可以使用sorted来执行如下操作

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

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

  • 使用用户定义的函数:

    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])
    
  • 使用排序:

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


  • 这个问题可能更适合这里:是的,codereview。另外,
    isinstance(数组,列表或元组)
    无效-使用
    isinstance(数组,(列表,元组))
    @Jignesh-Jarsaniya好的,你是第一个。Python内置排序方法的运行时是什么?是O(n log n)吗?如果是这样的话,这不是比forloop方法慢吗?您可以使用上面的任何一种方法。仅供参考。您还可以尝试这两种方法来确定执行需要多少时间?
    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])
    
    def greatest_ele_list(listobj):
        listobj2=listobj.sort()
        return listobj2[-1]
    print greatest_ele_list([4,5,3,8,1])