如何在Python中使用布尔变量作为if条件
我对以下代码感到困惑: 定义此findmin函数以查找列表中的最小数字O(n^2)如何在Python中使用布尔变量作为if条件,python,if-statement,boolean,Python,If Statement,Boolean,我对以下代码感到困惑: 定义此findmin函数以查找列表中的最小数字O(n^2) 我不明白:为什么作者在第一个for循环下面设置“issmallest=True”?通常当我们想使用类似这种情况的布尔值时(例如在代码开头将布尔值指定给变量,或将布尔值作为if语句条件)?谢谢 while的条件必须始终计算为布尔值。如果计算结果为true,则循环将继续,否则,将执行循环后的语句。请注意:您问题中的代码没有涉及while循环。这个代码非常糟糕,请忘记它,以及它附带的所有东西。对于学习,请尝试以下内容:
我不明白:为什么作者在第一个for循环下面设置“issmallest=True”?通常当我们想使用类似这种情况的布尔值时(例如在代码开头将布尔值指定给变量,或将布尔值作为if语句条件)?谢谢 while的条件必须始终计算为布尔值。如果计算结果为true,则循环将继续,否则,将执行循环后的语句。请注意:您问题中的代码没有涉及while循环。这个代码非常糟糕,请忘记它,以及它附带的所有东西。对于学习,请尝试以下内容:。好的,首先,要删除代码中的一些错误,可以使用以下示例:
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
此代码背后的思想是将列表中的所有元素与所有其他元素进行比较,并保留比所有其他元素都小的元素。因此,在循环中,假定当前元素是最小的issmallest=True
,直到找到较小的元素为止。如果找到较小的值,issmallest的值将更改为False。因此,如果在与所有其他元素进行比较后,issmallest仍然是真的,那么元素确实是最小的,因此是固定不变的
您可以简化此代码,因为一旦找到最小的元素,就无需进一步比较,也就是说,您可以离开函数。此外,在该算法中,不需要为最小元素保留变量。相应的代码可能如下所示:
def findMin(alist):
for current_el in alist:
issmallest = True
for other_el in alist:
if other_el < current_el:
issmallest = False
if issmallest:
return current_el
def findMin(列表):
对于列表中的当前元素:
issmallest=True
对于列表中的其他内容:
如果其他电能<当前电能:
issmallest=False
如果是最小的:
返回电流
但是:即使对于初学者来说,这也不是一个找到最小值的好代码。我自己作为初学者也可以这么说。在一个元素在手的情况下浏览一次列表,在浏览时进行比较,并始终保留最小的元素,这样会更干净。
因此,即使是低成本,您也可以编写一个更快的算法,如下所示:
def findMin(alist):
smallest_el = alist.pop() # take out an element, no need to compare with itself
for other_el in alist:
if other_el < smallest_el:
smallest_el = other_el
return smallest_el
def findMin(列表):
最小的_el=alist.pop()#取出一个元素,无需与自身进行比较
对于列表中的其他内容:
如果其他元素<最小元素:
最小值=其他值
返回最小值
如果代码不好而且不起作用,我建议从更好的示例中学习。此外,它不包含,而为True:
,尽管琐碎的研究会发现你的问题没有多大意义。你应该考虑简化它,你会问很多问题,可能会让自己困惑。至于1。为什么作者将issmallest设置为True。。这意味着假设值总是最小的,除非i>j
def findMin(alist):
smallest_el = alist.pop() # take out an element, no need to compare with itself
for other_el in alist:
if other_el < smallest_el:
smallest_el = other_el
return smallest_el