news 2026/9/11 9:24:23

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
通过循环结构深入理解最大值与最小值的查找

目录

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_num=10,即largerst_so_far=10,继续40>10,更新,再往下,哦哦13<40,所以不更新,同样的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,000?10,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是不是等于None(is的使用要比==更加的严格,我们一般只在判断对错的情况下用is、is not),好的是的,我们将其更新赋值为the_num,之后的代码更加的智能,None意味着这是第一次的循环,而在后面第二次第三次的循环中,if永远不成立,我们转而执行elif的指令,直到找到最小值4,直到完成对集合的循环

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 9:23:33

让RAG更进一步的利器:教你使用两种出色的Rerank排序模型

前言 在高级RAG的应用中&#xff0c;常常会有一些“检索后处理&#xff08;Post-Retrieval&#xff09;”的环节。顾名思义&#xff0c;这是在检索出输入问题相关的多个Chunk后&#xff0c;在交给LLM合成答案之前的一个处理环节。在这个环节中&#xff0c;可以做一些诸如相似度…

作者头像 李华
网站建设 2026/9/11 9:22:59

服务端渲染策略与缓存边界

服务端渲染策略与缓存边界服务端渲染的选择取决于内容更新频率、个性化程度和可接受的首次响应时间。缓存键必须包含影响输出的语言、权限和查询参数。 避免水合差异 服务端与客户端使用同一份初始数据和时间处理规则。依赖浏览器能力的代码延后执行&#xff0c;并在错误时提供…

作者头像 李华
网站建设 2026/9/11 9:23:18

NextDenovo v2.5.2 安装与使用进阶--生信工具081

NextDenovoNextDenovo 是一款基于字符串图&#xff08;string graph&#xff09;的长读长序列从头组装软件&#xff0c;适用于 CLR、HiFi 和 ONT 等长读长测序数据。该软件采用与 canu 相似的 “先校正后组装” 策略&#xff08;PacBio HiFi 读长无需校正步骤&#xff09;&…

作者头像 李华
网站建设 2026/9/11 9:22:01

Python新手库管:IF语法实战终结金额出库库存3错

&#x1f4cc;阅读提示&#xff1a;本文主要面向库管与台账业务人员&#xff0c;包含Python语法、安装和使用Pycharm和Python.exe的讲解。如果您没有库存相关业务背景&#xff0c;部分业务案例不容易看懂。 绪论 新手仓管最怕三件事&#xff1a;负出库、金额超限没人审、缺货了…

作者头像 李华
网站建设 2026/9/2 15:56:40

掌握大语言模型提示词工程:利用工具实现自动推理的高效教程!

Function/Tool Callingopenai: 函数调用为 OpenAI 模型提供了一种强大而灵活的方式&#xff0c;可以与您的代码或外部服务进行交互。通过函数调用&#xff0c;您可以向 Assistant 描述函数&#xff0c;并让其智能地返回需要调用的函数及其参数。openai langchain: 我们将“工具…

作者头像 李华
网站建设 2026/9/1 7:15:28

拼多多主体变更公证流程是什么?新手商家常忽略的3个关键步骤

一、前言&#xff1a;多数商家卡公证的核心原因 很多新手拼多多商家在做店铺主体变更时&#xff0c;普遍存在认知误区&#xff0c;认为私下签署转让协议即可完成变更&#xff0c;殊不知平台仅认可合规公证书。不少商家因不懂平台规则、文书格式不符、材料准备出错&#xff0c;…

作者头像 李华