改进Python用户定义的max函数
我是编程新手,正在尝试理解如何用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
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])