For循环与Max函数在Python中查找列表中的最大数字(初学者)



这两者之间有什么区别?用于循环和最大函数。我应该选择哪一个?对于环路:

numbers = [3, 6, 2, 8, 4, 10]
max = numbers[0]
for number in numbers:
if number > max:
max = number
print(max)

相反,为什么我不能使用max函数,它只有一行代码?最大功能:

print(max(3, 6, 2, 8, 4, 10))

他们两个在终端上显示的内容相同。为什么我不能选择这个?

您应该使用max((函数。它需要更少的代码行,而且它的占地面积比for循环小得多。使用max((函数没有缺点,它的工作方式与for循环完全相同,只是代码行数更少。没有什么可以阻止您使用此内置方法。就优化和速度而言,我相信使用这两种方法都不会有显著差异。

max函数通常比等价的for循环运行得更快。运行时间,我得到:

>>> import timeit
>>> print(min(timeit.Timer('max((1,2,3,4,5,6,7,8,9,10))').repeat(100,10000)))
0.0017686000001049251
>>> print(min(timeit.Timer('''max = 1
for number in (1,2,3,4,5,6,7,8,9,10):
if number > max:
max = number''').repeat(100,10000)))
0.0028327999998509767

打印的数字是以秒为单位的执行时间,用于至少100次试验,每次10000次,双向查找最大值。正如你所看到的,max更快。有人决定在教程中使用for循环的原因可能是为了向初学者说明for循环的想法。

建议使用内置的max(),它不仅节省了您的编码时间,而且更不容易出错,速度更快。

为什么不让生活更轻松:(

当然,您将使用max(),根据大O表示法,它是O(n(,除非您使用不同的数据结构来支持值集合的最大值,因为某些实现是不变的。

使用循环找到一个最大元素,它将遍历所有元素,该case循环也将取O(n(。如果你对使用max()没有限制,那么你可以使用max(),它很简单,而且是线性的。

您还可以了解max()的效率。

当您使用max()函数时,您使用的是python附带的内置函数。这些所谓的内置函数通常比您自己为完全相同的任务编写解决方案更快。

max()采用iterable作为输入,意思是:列表、元组或仅用逗号分隔的值。

在您的代码中,您试图实现与max函数相同的功能,但它只有在给定列表或元组作为输入numbers时才能工作。看看下面的例子:

my_tuple = (2,5,6,1,6)
print (max(my_tuple))
>> 6
my_list = [1,2,3,3,8]
print (max(my_list))
>> 8
print (max(5,1,2,5,3,4))
>> 5

对于大多数(如果不是所有(场景,使用实现max()函数应该是有用的。

最新更新