python学习笔记 | 7.2、高级特性-迭代

一、迭代是什么(人话版)

迭代 = 用 for 循环,一个一个把东西拿出来遍历一遍

  • list 能迭代
  • tuple 能迭代
  • 字符串能迭代
  • dict 能迭代
  • 数字不能迭代

二、这一节的重点用法

1. 遍历 list

复制代码
for x in [1,2,3]:
    print(x)

2. 遍历 dict(默认遍历 key)

复制代码
d = {'a':1, 'b':2}
for key in d:
    print(key)

3. 遍历 dict 的 value

复制代码
for v in d.values():
    print(v)

4. 同时遍历 key + value

复制代码
for k, v in d.items():
    print(k, v)

5. 带下标遍历(enumerate)

复制代码
for i, val in enumerate(['A','B']):
    print(i, val)

三、现在做这道练习题

题目:

用迭代查找 list 里的最小和最大值,返回一个 tuple

复制代码
def findMinAndMax(L):
    return (None, None)

思路

  1. 如果 list 是空,直接返回 (None, None)
  2. 先假设第一个元素是最小值、也是最大值
  3. 用 for 循环迭代每一个数
    • 比最小值还小 → 更新最小值
    • 比最大值还大 → 更新最大值
  4. 最后返回 (min, max)

四、完整代码 + 执行流程讲解

复制代码
def findMinAndMax(L):
    # 空列表
    if len(L) == 0:
        return (None, None)

    # 初始化最小、最大为第一个元素
    min_val = L[0]
    max_val = L[0]

    # 迭代每一个数
    for num in L:
        if num < min_val:
            min_val = num
        if num > max_val:
            max_val = num

    return (min_val, max_val)

五、程序怎么走?以 [7,1,3,9,5] 举例

  1. 列表不为空

  2. min_val = 7max_val = 7

  3. 开始迭代:

  • num = 7

    7 不小于 7,不大于 7 → 不变

  • num = 1

    1 < 7 → min_val = 1

  • num = 3

    不比 min 小,不比 max 大 → 不变

  • num = 9

    9 > 7 → max_val = 9

  • num =5

    不变

  1. 最终返回:(1, 9)

六、测试代码

复制代码
if findMinAndMax([]) != (None, None):
    print('测试失败!')
elif findMinAndMax([7]) != (7, 7):
    print('测试失败!')
elif findMinAndMax([7, 1]) != (1, 7):
    print('测试失败!')
elif findMinAndMax([7, 1, 3, 9, 5]) != (1, 9):
    print('测试失败!')
else:
    print('测试成功!')

测试成功!

===分割线=

代码

复制代码
def findmaxandmin(L):
    if len(L)==0:
        return(None,None)

    L_max=L[0]
    L_min=L[0]
    for i in L:
        if i > L_max:
            L_max=i
        if i < L_min:
            L_min=i
    return(L_max,L_min)

L=[1,2,3,4,5,6,7]
print(findmaxandmin(L))    

==分割线=

练习 1(基础)

完善函数,返回列表里的最大值

复制代码
def get_max(L):
    if len(L) == 0:
        return None

    # 在这里写代码


# 测试
print(get_max([3, 1, 4, 2]))  # 应该输出 4

代码

复制代码
def get_max(L):
    if len(L) == 0:
        return None
    L_max = L[0]
    for i in L:
        if i > L_max:
            L_max = i
    return L_max
L=[1,2,3,4,5,6,7,8,9,99]
print(get_max(L))

练习 2(进阶)

完善函数,返回列表里的最小值

复制代码
def get_min(L):
    if len(L) == 0:
        return None

    # 在这里写代码


# 测试
print(get_min([5, 8, 3, 9]))  # 应该输出 3

代码

复制代码
def get_min(L):
    if len(L) == 0:
        return None
    L_min = L[0]
    for i in L:
        if i<L_min:
            L_min = i
    return L_min

L=[1,2,3,47,8,0]
print(get_min(L))

练习 3(综合,和原题一样)

返回一个元组:(最小值, 最大值)

复制代码
def find_min_max(L):
    # 在这里写代码


# 测试
print(find_min_max([7, 1, 3, 9, 5]))  # (1, 9)
print(find_min_max([]))                # (None, None)
print(find_min_max([666]))             # (666, 666)

代码

复制代码
def find_min_max(L):
    if len(L) == 0:
        return (None, None)
    L_max=L[0]
    L_min=L[0]
    for i in L:
        if i > L_max:
            L_max = i
        if i < L_min:
            L_min = i
    return (L_max, L_min)
L=[1,2,3,4,5,6,7,8,9,10,11,12]
print(find_min_max(L))
相关推荐
qq5918406853 小时前
uiautomator2自动化安卓手机操作
python
80s7773 小时前
动态代理和静态代理的区别,动态代理怎么提高网络安全性
python
小弥儿4 小时前
GitHub今日热榜 | 2026-09-15:AI 智能体与本地生成工具领跑
学习·开源
老当益壮梁奶奶4 小时前
51单片机DS18B20温度传感器详解:单总线时序与C51驱动实现
笔记·stm32·单片机·嵌入式硬件·51单片机
susplus5 小时前
【初识ARM】ARM相关基础概念
学习·arm
XiHongShi20165 小时前
键盘大小写指示器(代替键盘灯)
学习·计算机
niucloud-admin5 小时前
JAVA V6 多商户商城 开发文档——job 计划任务开发
java·python·github
小叶肥辉5 小时前
LangChain链和LangGraph图的学习笔记【三】——分别用langchain_openai库和langchain_community库调用大模型
笔记·python·langchain
2401_873479406 小时前
IP属地为什么有时显示外省?用IP查询工具核查动态分配、运营商出口与GeoIP库
python·tcp/ip·ip
斯维赤6 小时前
AI Agent学习之路 | Prompt Engineering(提示词工程)的三板斧核心技巧
人工智能·学习·prompt