Python 8天极速入门笔记(大模型工程师专用):第三篇-列表与字典(Python核心数据结构,大模型必备)

一、开篇回顾 + 今日目标

  • 回顾:Day2掌握了Python变量、3种核心数据类型和print输出,能独立写基础代码,今日重点学习Python两大核心数据结构。

  • 今日目标:

    • 熟练掌握列表(list)的定义、基础操作(新增、删除、访问、遍历),理解其有序、可修改的特性;

    • 熟练掌握字典(dict)的定义、基础操作(新增、修改、访问、遍历),理解其键值对、无序的特性;

    • 结合大模型场景,学会用列表存储对话历史、prompt列表,用字典存储模型配置、单条对话;

    • 区分列表与字典的使用场景,能独立完成实操练习,避免混淆。

二、核心知识点(细致讲解,兼顾Python基础与大模型场景)

(一)列表(list)------ 有序、可修改的"批量数据容器"

    1. 列表的定义(核心语法)
    • 语法格式:列表名 = [元素1, 元素2, 元素3, ...],元素可以是任意数据类型(字符串、数字、布尔值,甚至是列表/字典)

    • 示例(大模型场景):

      • prompt列表:prompts = ["介绍Python", "介绍大模型", "Python调用大模型"]

      • 对话历史:chat_history = [{"role": "user", "content": "你好"}, {"role": "assistant", "content": "你好!"}]

    • 关键特性:有序(元素的位置固定,按定义顺序排列)、可修改(可新增、删除、修改元素)、可重复(元素可以重复)。

    1. 列表的基础操作(必学,大模型高频使用)
    • (1)访问元素(按索引访问,核心操作)

      • 语法:列表名[索引值],索引从0开始(第一个元素索引为0,第二个为1,以此类推)

      • 示例:prompts = ["a", "b", "c"],print(prompts[0]) → 输出"a",print(prompts[2]) → 输出"c"

      • 反向访问:索引为负数,-1表示最后一个元素,-2表示倒数第二个(示例:prompts[-1] → "c")

      • 大模型场景:访问对话历史中的某条对话(chat_history[0] → 获取第一条对话)

    • (2)新增元素(常用2种方法)

      • append():在列表末尾新增一个元素(最常用,大模型添加对话历史常用)

      • 示例:chat_history.append({"role": "user", "content": "Python怎么调用大模型?"})

      • insert():在指定索引位置新增元素(语法:列表名.insert(索引, 元素))

      • 示例:prompts.insert(1, "大模型原理") → 在第二个位置新增元素

    • (3)修改元素(直接赋值)

      • 语法:列表名[索引] = 新元素(覆盖原有元素)

      • 示例:prompts[0] = "介绍Python基础" → 修改第一个元素

      • 大模型场景:修改对话历史中的某条内容(chat_history[1]["content"] = "你好!我是AI助手")

    • (4)删除元素(常用3种方法)

      • del:删除指定索引的元素(语法:del 列表名[索引])

      • pop():删除指定索引的元素,并返回该元素(默认删除最后一个元素)

      • remove():根据元素值删除元素(语法:列表名.remove(元素值),删除第一个匹配的元素)

      • 大模型场景:删除无效的对话内容(chat_history.remove(chat_history[2]) → 删除第三条对话)

    • (5)遍历列表(批量处理,大模型高频)

      • for循环遍历(最常用):for 变量 in 列表名: 执行语句

      • 示例(批量处理prompt):prompts = ["介绍Python", "介绍大模型", "Python调用大模型"] ``for prompt in prompts: `` print("当前prompt:", prompt)

      • enumerate()遍历:获取索引和元素(语法:for 索引, 变量 in enumerate(列表名): 执行语句)

      • 示例(批量处理对话历史,带索引):chat_history = [{"role": "user", "content": "你好"}, {"role": "assistant", "content": "你好!"}] ``for idx, msg in enumerate(chat_history): `` print(f"第{idx+1}条对话:{msg['role']}:{msg['content']}")

    1. 列表的其他常用操作(按需掌握)
    • len(列表名):计算列表长度(元素个数),大模型场景:判断对话历史长度(len(chat_history))

    • sorted(列表名):对列表排序(默认升序),适用于批量处理有序数据

    • 列表切片:列表名[开始索引:结束索引],获取列表的一部分(示例:prompts[0:2] → 获取前两个元素)

    1. 易错点提醒(新手必看)
    • 索引越界:访问的索引超出列表长度(如列表有3个元素,访问索引3,会报错);

    • append()与insert()混淆:append()只能在末尾新增,insert()可指定位置;

    • 遍历列表时修改列表长度(如删除元素),会导致遍历不完整。

(二)字典(dict)------ 无序、键值对的"结构化数据容器"

    1. 字典的定义(核心语法)
    • 语法格式:字典名 = {键1: 值1, 键2: 值2, ...},键(key)和值(value)成对出现,键唯一,值可任意数据类型

    • 示例(大模型场景):

      • 模型配置:model_config = {"model": "qwen-7b", "temperature": 0.7, "max_tokens": 1024}

      • 单条对话:msg = {"role": "user", "content": "什么是大模型?"}

    • 关键特性:无序(Python 3.7+后有序,但不依赖顺序)、键唯一(同一字典中不能有重复的键)、可修改(可新增、修改、删除键值对)。

    • 核心作用:存储结构化数据,键用于标识,值用于存储具体内容,大模型中常用于存储配置、单条对话等。

    1. 字典的基础操作(必学,大模型高频使用)
    • (1)访问值(按键访问,核心操作)

      • 语法:字典名[键名] → 获取该键对应的 value

      • 示例:print(model_config["temperature"]) → 输出0.7,print(msg["content"]) → 输出"什么是大模型?"

      • get()方法(推荐,避免报错):字典名.get(键名, 默认值),键不存在时返回默认值(示例:model_config.get("top_p", 0.9) → 键不存在,返回0.9)

      • 大模型场景:获取模型配置中的参数(model_config["max_tokens"])、获取对话中的内容(msg["content"])

    • (2)新增键值对(直接赋值)

      • 语法:字典名[新键名] = 新值,若键不存在则新增,若键存在则修改

      • 示例(新增模型配置):model_config["stream"] = True → 新增"流式输出"配置

      • 大模型场景:为单条对话新增"时间"字段(msg["time"] = "2026-03-29")

    • (3)修改值(直接赋值)

      • 语法:字典名[已存在的键名] = 新值(覆盖原有值)

      • 示例(调整模型参数):model_config["temperature"] = 0.5 → 修改温度参数

    • (4)删除键值对(常用2种方法)

      • del:删除指定键的键值对(语法:del 字典名[键名])

      • 示例:del model_config["stream"] → 删除"流式输出"配置

      • pop():删除指定键的键值对,并返回该键对应的 value(语法:字典名.pop(键名))

    • (5)遍历字典(大模型批量处理配置常用)

      • 遍历键:for 键 in 字典名: 执行语句(示例:for key in model_config: print(key) → 输出所有键)

      • 遍历值:for value in model_config.values(): 执行语句(示例:for value in model_config.values(): print(value) → 输出所有值)

      • 遍历键值对(最常用):for 键, 值 in 字典名.items(): 执行语句

      • 示例(打印模型配置): model_config = {"model": "qwen-7b", "temperature": 0.7, "max_tokens": 1024} ``for key, value in model_config.items(): `` print(f"{key}:{value}")

    1. 字典的其他常用操作(按需掌握)
    • len(字典名):计算字典中键值对的个数(示例:len(model_config) → 3)

    • keys():获取所有键(返回一个可迭代对象),values():获取所有值,items():获取所有键值对

    • clear():清空字典中所有键值对(语法:字典名.clear())

    1. 易错点提醒(新手必看)
    • 键必须唯一:同一字典中不能有重复的键,否则后面的键值对会覆盖前面的;

    • 键的类型限制:键只能是不可变类型(字符串、数字、布尔值),不能是列表、字典等可变类型;

    • 访问不存在的键:用字典名[键名]会报错,推荐用get()方法;

    • 字典无序:不能按索引访问,只能按键访问(Python 3.7+后有序,但不推荐依赖顺序)。

(三)列表与字典的区别(关键,避免混淆)

|-------|-----------------------|--------------------|
| 对比维度 | 列表(list) | 字典(dict) |
| 结构 | 有序的元素集合,无键值对 | 无序的键值对集合 |
| 访问方式 | 按索引访问 | 按键访问 |
| 元素特性 | 元素可重复,可任意类型 | 键唯一,值可任意类型 |
| 大模型场景 | 存储批量数据(对话历史、prompt列表) | 存储结构化数据(模型配置、单条对话) |

三、今日实操(代码可直接复制,贴合大模型场景)

  • 实操1:列表操作(对话历史管理)

    python 复制代码
    # 定义对话历史列表(大模型聊天场景)
    chat_history = [
        {"role": "user", "content": "你好,介绍一下Python"},
        {"role": "assistant", "content": "Python是一门简洁易用的编程语言,适合大模型开发"}
    ]
    
    # 1. 新增对话(append())
    chat_history.append({"role": "user", "content": "Python怎么调用大模型?"})
    print("新增对话后:", chat_history)
    
    # 2. 访问第一条对话
    print("\n第一条对话:", chat_history[0])
    
    # 3. 修改第二条对话的内容
    chat_history[1]["content"] = "Python是大模型开发的首选语言,生态完善、用法简洁"
    print("\n修改对话后:", chat_history)
    
    # 4. 删除第三条对话(del)
    del chat_history[2]
    print("\n删除对话后:", chat_history)
    
    # 5. 遍历对话历史(带索引)
    print("\n遍历对话历史:")
    for idx, msg in enumerate(chat_history):
        print(f"第{idx+1}条:{msg['role']} → {msg['content']}")
    
    # 6. 计算对话历史长度
    print("\n对话历史长度:", len(chat_history))
  • 实操2:字典操作(模型配置管理)

    python 复制代码
    # 定义模型配置字典(大模型调用场景)
    model_config = {
        "model_name": "chatglm3-6b",
        "temperature": 0.7,
        "max_new_tokens": 1024,
        "top_p": 0.9
    }
    
    # 1. 访问模型温度参数(两种方式)
    print("模型温度(直接访问):", model_config["temperature"])
    print("模型top_p(get方法):", model_config.get("top_p", 0.8))
    
    # 2. 新增配置(流式输出)
    model_config["stream"] = True
    print("\n新增配置后:", model_config)
    
    # 3. 修改模型温度参数
    model_config["temperature"] = 0.5
    print("\n修改温度后:", model_config)
    
    # 4. 删除top_p配置(pop())
    model_config.pop("top_p")
    print("\n删除top_p后:", model_config)
    
    # 5. 遍历模型配置(键值对)
    print("\n遍历模型配置:")
    for key, value in model_config.items():
        print(f"{key}:{value}")
    
    # 6. 计算配置个数
    print("\n配置个数:", len(model_config))
  • 实操3:列表与字典结合(大模型批量处理)

    python 复制代码
    # 定义prompt列表和模型配置字典
    prompts = [
        "介绍大模型的核心原理",
        "Python如何调用大模型API",
        "推荐3个大模型开发常用的Python库"
    ]
    model_config = {"model": "qwen-7b", "temperature": 0.6}
    
    # 批量处理prompt,模拟大模型调用
    print("批量处理prompt:")
    for idx, prompt in enumerate(prompts):
        print(f"\n第{idx+1}个prompt:{prompt}")
        print(f"模型配置:{model_config}")
        print("模拟模型响应:基于当前prompt生成回答(实际开发中替换为真实调用)")

四、易错点汇总(新手避坑)

  • 列表索引越界,访问不存在的索引;

  • 字典用索引访问值,导致报错(应按键访问);

  • 字典中使用重复的键,导致数据覆盖;

  • 遍历列表时删除元素,导致遍历不完整;

  • 混淆列表和字典的使用场景(批量数据用列表,结构化数据用字典)。

五、今日练习(10分钟巩固)

    1. 定义一个prompt列表,包含5个大模型相关的prompt,新增1个prompt,删除第3个prompt,遍历并打印所有prompt;
    1. 定义一个模型配置字典,包含模型名称、温度、最大tokens、是否开启流式输出,修改温度为0.4,新增top_k参数(值为50),遍历并打印所有配置;
    1. 定义一个对话历史列表(包含3条对话),遍历列表,打印每条对话的角色和内容。

六、次日预告

  • Day4将讲解Python流程控制的核心------if判断和for循环,学会后就能实现"条件校验"和"批量处理",比如批量调用大模型、校验模型参数合法性,为后续函数封装打下基础!
相关推荐
书到用时方恨少!2 小时前
Python 零基础入门系列(十一):模块和包
开发语言·python
Lenyiin2 小时前
深度剖析 C 语言标准IO库:stdio 实现原理与实战指南
c语言·开发语言
阿kun要赚马内2 小时前
Python面向对象编程:封装性
开发语言·python
Yao.Li2 小时前
PVN3D TensorRT 环境配置指南
人工智能·python·具身智能
郝学胜-神的一滴2 小时前
巧解括号序列分解问题:栈思想的轻量实现
开发语言·数据结构·c++·算法·面试
zzwq.2 小时前
Python面向对象编程(OOP)基础详解
python
代码改善世界2 小时前
【C++初阶】string类(一):从基础到实战
开发语言·c++