我对以下代码感到困惑:
def findMin(alist):
overallmin=alist[0]
for i in alist:
issmallest=True
for j in alist:
if i>j:
issmallest=False
if issmallest:
overallmin = i
return overallmin
我不明白:为什么作者在第一个for循环下面设置“issmallest=True”?通常当我们想使用类似这种情况的布尔值时(例如在代码开头将布尔值赋给变量或将布尔值作为if语句条件)?谢谢!你知道吗
while的条件总是必须计算为布尔值。如果计算结果为true,则循环继续,否则,将执行循环后的语句。请注意:您问题中的代码没有涉及while循环。这个代码非常糟糕,请忘记它,以及它带来的一切。要学习,请尝试以下方法:https://www.learnpython.org/。你知道吗
好的,首先,为了消除代码中的一些错误,一个有效的例子是:
此代码的思想是将列表中的所有元素与所有其他元素进行比较,并保留比所有其他元素小的元素。因此,在循环中,假设当前元素是最小的
issmallest = True
,直到找到一个较小的元素。如果找到一个较小的值,issmallest的值将更改为False。因此,如果在与所有其他元素比较之后,issmallest仍然是真的,那么元素确实是最小的,因此是固定不变的。你知道吗您可以简化此代码,因为一旦找到最小的元素,就无需进一步比较,即您可以离开函数。在这个算法中,不需要为最小的元素保留一个变量。相应的代码可能如下所示:
但是:即使对于初学者来说,这也不是一个很好的寻找最小值的代码。作为一个初学者,我可以这么说。在一个元素在手的情况下浏览一次列表,在浏览的同时进行比较,并始终保持最小值,这样会更干净。 因此,即使在低成本的情况下,您也可以编写这样一个更快的算法:
相关问题 更多 >
编程相关推荐