网站首页 > 技术文章 正文
以下是一个Python示例程序,该程序不使用max和min函数,而是通过循环遍历列表中的每个元素来找出最大值和最小值。我将详细解释每一步的作用。
def find_max_and_min(lst):
"""
遍历列表lst,找出其中的最大值和最小值。
参数:
- lst: 一个整数列表
返回:
- 一个元组,包含列表中的最大值和最小值
如果列表为空,则返回(None, None)或者根据需要抛出异常。
"""
# 首先检查列表是否为空
if not lst:
return None, None # 或者可以抛出异常,如 raise ValueError("列表不能为空")
# 初始化最大值和最小值为列表的第一个元素
min_val = max_val = lst[0]
# 从列表的第二个元素开始遍历
for item in lst[1:]:
# 如果当前元素大于已知的最大值,则更新最大值
if item > max_val:
max_val = item
# 如果当前元素小于已知的最小值,则更新最小值
if item < min_val:
min_val = item
# 返回找到的最大值和最小值
return max_val, min_val
# 示例
lst = [3, 1, 4, 1, 5, 9, 2, 6]
max_val, min_val = find_max_and_min(lst)
print(f"列表中的最大值是: {max_val}, 最小值是: {min_val}")
# 尝试空列表
empty_lst = []
print(find_max_and_min(empty_lst)) # 输出 (None, None)
详细说明
- 函数定义: find_max_and_min(lst) 函数接受一个列表 lst 作为输入。
- 空列表检查: 首先检查列表是否为空。如果为空,则函数返回 (None, None)。这是为了处理边界情况,因为空列表没有最大值或最小值。
- 初始化: 使用列表的第一个元素来初始化 min_val 和 max_val。这里假设列表至少有一个元素(已在空列表检查中确认)。
- 遍历列表: 从列表的第二个元素开始遍历(因为第一个元素已被用作初始值)。对于列表中的每个元素,将其与当前的最大值和最小值进行比较。
如果当前元素大于 max_val,则更新 max_val。
如果当前元素小于 min_val,则更新 min_val。
- 返回结果: 遍历完成后,函数返回找到的最大值和最小值组成的元组。
- 示例: 示例部分展示了如何使用这个函数来找出给定列表中的最大值和最小值,并打印结果。同时,也展示了当列表为空时函数的行为。
- 上一篇: 再聊一个算法题吧(一个算法可以有几个输入)
- 下一篇: 十三、隔离见证(1+13隔离政策)
猜你喜欢
- 2024-09-09 序列化 Python 对象(序列化对象需要实现的接口)
- 2024-09-09 一篇文章读懂系列-2.二叉树及常见面试题
- 2024-09-09 Meta 如何将缓存一致性提高到 99.99999999
- 2024-09-09 自学Python笔记2(python0基础自学书)
- 2024-09-09 找到两个链表的第一个公共节点(找出两个链表的第一个公共节点)
- 2024-09-09 详解SkipList跳跃链表(跳表遍历)
- 2024-09-09 Python画豪华版圣诞树,带漂亮彩灯与文字背景
- 2024-09-09 零基础Python完全自学教程23:函数的返回值、作用域和匿名函数
- 2024-09-09 redis的内存满了之后,redis如何回收内存
- 2024-09-09 「python小游戏」据说这是一款还原度超高的小游戏,你感受下....
- 02-21走进git时代, 你该怎么玩?_gits
- 02-21GitHub是什么?它可不仅仅是云中的Git版本控制器
- 02-21Git常用操作总结_git基本用法
- 02-21为什么互联网巨头使用Git而放弃SVN?(含核心命令与原理)
- 02-21Git 高级用法,喜欢就拿去用_git基本用法
- 02-21Git常用命令和Git团队使用规范指南
- 02-21总结几个常用的Git命令的使用方法
- 02-21Git工作原理和常用指令_git原理详解
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)