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": "你好!"}]
-
-
关键特性:有序(元素的位置固定,按定义顺序排列)、可修改(可新增、删除、修改元素)、可重复(元素可以重复)。
-
-
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循环,学会后就能实现“条件校验”和“批量处理”,比如批量调用大模型、校验模型参数合法性,为后续函数封装打下基础!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)