一、开篇回顾 + 今日目标

  • 回顾: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": "你好!"}]

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

  • 2. 列表的基础操作(必学,大模型高频使用)

    • (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']}")

  • 3. 列表的其他常用操作(按需掌握)

    • len(列表名):计算列表长度(元素个数),大模型场景:判断对话历史长度(len(chat_history))

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

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

  • 4. 易错点提醒(新手必看)

    • 索引越界:访问的索引超出列表长度(如列表有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+后有序,但不依赖顺序)、键唯一(同一字典中不能有重复的键)、可修改(可新增、修改、删除键值对)。

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

  • 2. 字典的基础操作(必学,大模型高频使用)

    • (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}")

  • 3. 字典的其他常用操作(按需掌握)

    • len(字典名):计算字典中键值对的个数(示例:len(model_config) → 3)

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

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

  • 4. 易错点提醒(新手必看)

    • 键必须唯一:同一字典中不能有重复的键,否则后面的键值对会覆盖前面的;

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

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

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

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

对比维度

列表(list)

字典(dict)

结构

有序的元素集合,无键值对

无序的键值对集合

访问方式

按索引访问

按键访问

元素特性

元素可重复,可任意类型

键唯一,值可任意类型

大模型场景

存储批量数据(对话历史、prompt列表)

存储结构化数据(模型配置、单条对话)

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

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

    # 定义对话历史列表(大模型聊天场景)
    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:字典操作(模型配置管理)

    # 定义模型配置字典(大模型调用场景)
    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:列表与字典结合(大模型批量处理)

    # 定义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;

  • 2. 定义一个模型配置字典,包含模型名称、温度、最大tokens、是否开启流式输出,修改温度为0.4,新增top_k参数(值为50),遍历并打印所有配置;

  • 3. 定义一个对话历史列表(包含3条对话),遍历列表,打印每条对话的角色和内容。

六、次日预告

  • Day4将讲解Python流程控制的核心——if判断和for循环,学会后就能实现“条件校验”和“批量处理”,比如批量调用大模型、校验模型参数合法性,为后续函数封装打下基础!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐