通过循环结构深入理解最大值与最小值的查找

发布时间:2026/8/27 18:26:56
通过循环结构深入理解最大值与最小值的查找 目录1.引言2.寻找最大值3.寻找最小值4.空类型值None Type)1.引言在之前我们已经学习了如何使用max()和min()函数来比较大小这些函数对于处理简单的数据集非常方便。然而当我们面对大量数据时仅仅依靠这两个函数可能并不足够。在这种情况下我们可以借助循环结构通过逐个元素的比较来实现相同的目标。现在让我们来看一下如何使用循环来找到数据中的最大值和最小值。2.寻找最大值largerst_so_far -1 print(before, largerst_so_far) for the_num in [10,40,13,4,73,19]: if the_num largerst_so_far: largerst_so_far the_num print(largerst_so_far, the_num) print(after, largerst_so_far) #before -1 #10 10 #40 40 #40 13 #40 4 #73 73 #73 19 #after 73我们创建了一个名为largerst_so_far目前最大的变量并赋值为-1你应该有所注意到集合中的数字都为正数随后我们会创立一个迭代变量the_num这个变量会依次通10,40,13,4,73,19将这一区域的代码运行6次我们第一次遇到的数字是10这可比-1大多了所以依照循环我们将largerst_so_far-1更新为the_num10即largerst_so_far10继续4010更新再往下哦哦1340所以不更新同样的4不更新73更新19不更新输出73我们顺利的找到了集合当中的最大值也就是73这很容易吧你可以通过删去或者运用‘#’使得输出的结果更加清爽顺利找到了最大值那我们又该如何寻找最小值呢还有一种情况如果集合里面全是负数我们该怎么处理呢请你先试着修改上方最大值的代码试一下自己能否解决这个问题3.寻找最小值首先让我们对代码做一些修改把换成把large换成small做到这一步你已经很棒了让我们来试运行一下结果是4吗smallest_so_far -1 print(before, smallest_so_far) for the_num in [10,40,13,4,73,19]: if the_num smallest_so_far: smallest_so_far the_num print(smallest_so_far, the_num) print(after, smallest_so_far) #before -1 #-1 10 #-1 40 #-1 13 #-1 4 #-1 73 #-1 19 #after -1显然结果不是4我提供的代码是错的初始值是-1比集合中的任何一个数都要小所以输出的值是-1那我们错在哪里首先smallest代表不了任何东西如同我之前提及的一样它没有意义可以是x可以是y可以是任何东西仅仅改变变量名没有任何用我们代码中真正错误的地方在于“-1”那么什么值合适呢100那如果集合中都是三位数呢1,00010,000听着就很麻烦对吧4.空类型值None Type)-1并不是一个有意义的值它更像是一个旗帜flag告诉我们还没有进行循环现在让我们引入None类型None类型函数只有一个常量也就是它自己None我们可以把它理解为什么都不是什么都没有让我们尝试把初始值设定为None正如它的名字一样我们还没有见到过任何一个数字呢smallest_so_far None print(before, smallest_so_far) for the_num in [10,40,13,4,73,19]: if smallest_so_far is None: smallest_so_far the_num elif the_num smallest_so_far: smallest_so_far the_num print(smallest_so_far, the_num) print(after, smallest_so_far) #10 10 #10 40 #10 13 #4 4 #4 73 #4 19 #after 4首先我们让程序判断smallest_so_far是不是等于Noneis的使用要比更加的严格我们一般只在判断对错的情况下用is、is not好的是的我们将其更新赋值为the_num之后的代码更加的智能None意味着这是第一次的循环而在后面第二次第三次的循环中if永远不成立我们转而执行elif的指令直到找到最小值4直到完成对集合的循环