-这是 空框|Reframe 的第 19 篇文章-上一篇我们花了很多时间,把一个非常底层但关键的认知建立起来——程序本质上是在处理数据。变量给数据起名字,函数对数据执行动作,Prompt让AI能理解你的意图。如果说上一阶段,我们还停留在“一个变量处理一个值”,那么这一篇开始,我们要进入一个更真实的世界。而真实世界,从来不是一个数据,而是一组数据。用户不止一个,需求不止一个,任务也不止一条。所以这一篇,我们要解决的本质问题是:当数据变成“集合”时,Python是如何理解并处理它们的。
你准备做一个小实验:让AI为不同城市生成一句「周末逃离指南」。如果用我们之前的方式:city1 = "上海" city2 = "长沙" city3 = "成都"
如果城市变成30个呢?于是Python提供了一个更自然的结构: cities = ["上海", "长沙", "成都"]
现在,你不是在管理三个变量,而是在管理一组数据,这便是Python中非常重要的一个基础概念——列表(List)。
列表其实很像“产品里的数据池”。你可以从中取出一个元素:注意一个非常容易忽略,但未来会频繁使用的规则:Python中,列表的序号从0开始。这和很多数据库索引、缓存结构的设计是一致的。因此,在cities这个列表中,0代表“上海”,1代表“长沙”,2代表“成都”。
列表是可以动态变化的。我们可以通过以下方式,快速增加或删除列表中的内容。
在AI时代,我们可以把列表直接作为Prompt的输入:
topics = ["AI写作", "效率工具", "远程办公", "健康习惯"] prompt = f"为这些主题生成4个公众号选题:{topics}"print(prompt)
此时,列表不仅是数据结构,更是Prompt 的参数容器。
现在假设你想让AI为每一个主题生成一句吸引人的标题。print(topics[0]) print(topics[1])
编程中有一个非常重要的思维——任何重复操作,都应该交给机器。如果每一次都手动写一行代码,你很快就会发现一件事:不是代码难,而是重复劳动太多。编程语言早就为这个问题提供了一个非常核心的结构——循环(Loop)。其中最常用、也是最容易理解的一种,就是For循环。 可以用一句非常直白的话来解释:For循环,就是让计算机对一组数据逐个执行同一个动作。在Python中,For循环有一个非常固定、非常清晰的结构: 一个最基础的For循环代码例子如下:
for topic in topics: print(topic)
这段代码的真实含义是:
1、从topics列表中按0、1、2……的顺序取出一个元素
2、把它临时命名为topic
3、执行后面的动作,如print(topic)
4、重复直到结束
现在结合Prompt:
for topic in topics: prompt = f"为主题 {topic} 写一句极简风格的标题" print(prompt)
这其实已经非常接近真实AI工作流——你只写了一段代码,却驱动了多次生成任务。
这类模式在实际工作中非常常见:批量生成内容、批量改写文案、批量分类数据、批量处理用户反馈等。
Python非常严格的一点,是缩进。在For循环中,for a in b:,这一行冒号后,第二行需要空4个空格,否则如果是下面的格式会报错。 for city in cities:print(city)
列表解决了“多数据”的问题,但仍然有一个限制——你只能通过位置找到它。现实世界里,我们几乎从不用“第3个、第5个”去描述信息,而是用如用户ID、状态、类型、优先级、年龄、职业等来描述。也就是说:数据不仅要被存储,还要被“标记”。这就是字典(Dictionary)存在的意义。字典是一种用“标签 → 内容”的方式存储数据的结构。这和现实中的纸质字典非常像:单词(Key)和解释(Value)。在Python中,我们把这种结构称为——键值对(Key-Value)。user_profile = { "name": "黄方闻", "role": "产品经理", "experience_years": 10}
1、每一项信息都有一个Key,如"name"、“role”和“experience_years”;2、每个Key对应一个Value,如“黄方闻”、“产品经理”、10;如何读取字典中的信息?当我们输入如下代码:
print(user_profile["role"])
Python会输出的结果是:产品经理
和列表不同,字典不是用序号访问,而是用Key。这也是它最大的优势:语义清晰。
字典可以动态增加信息。例如通过下面的代码:
user_profile["favorite_tool"] = "Wechat"
你不需要重新创建整个结构,只需添加一项即可。此时,在字典中,会新增key"favorite_tool"和对应的值“Wechat”。
这在真实业务系统中非常常见:用户属性增加、配置字段扩展、标签体系扩展等。
一个字典内部可以包含:字符串、数字、列表甚至其他字典等,如下面的代码:
user_profile["interests"] = ["AI", "效率工具", "自动化"]
这意味着:字典是构建“复杂对象”的基础结构。
如果用系统设计的语言来看:列表解决“有很多数据”,而字典解决“这些数据分别代表什么”。
换句话说:列表管理数量,字典管理语义。而在AI时代,语义结构尤为重要。
现在来看一个更真实的场景。
假设你在做一个“学习路径生成器”。
students = [ {"name": "Aki", "goal": "数据分析"}, {"name": "Ren", "goal": "自动化脚本"}, {"name": "Kai", "goal": "AI产品"} ]
然后批量生成建议:
for student in students: prompt = f"给想学习{student['goal']}的零基础用户三条建议" print(get_llm_response(prompt))
这段代码本质上已经具备:用户数据结构、批量处理能力、Prompt模板和个性化输出入口。
这段代码背后,其实已经非常接近真实 AI 产品的“个性化推荐逻辑”。换句话说:你已经写出了一个极简AI Agent的雏形。
到这里,你已经掌握了三个看似基础,但极其关键的概念:
1、列表:管理多对象数据
2、For循环:批量处理
3、字典:结构化语义信息
这三者组合起来,本质上就是:信息如何被组织 → 如何被遍历 → 如何被加工。
如果放在AI产品的视角,这三者几乎就是Prompt Engineering和Agent系统的底层骨架。
一个典型的AI自动化流程,本质上就是:
1、用列表管理任务或用户
2、用字典存储上下文与状态
3、用循环驱动推理或生成
例如批量生成内容、自动分类用户、多轮对话状态管理、Agent执行任务链。
你会逐渐发现:AI并没有替代编程,而是放大了“结构化思维”的价值。
真正的效率提升,不来自模型本身,而来自你是否能把问题拆成:一组可迭代的数据、一个可重复执行的流程和一个有语义结构的上下文。
这一篇结束时,你不需要能写复杂程序。只要你能做到:
1、能创建列表并修改数据
2、能用For循环批量处理数据
3、能用字典描述一个对象的信息
4、能把这些结构作为Prompt输入
你已经完成了一次非常重要的跃迁:从“单点执行”,进入“流程化处理”。
如果把学习Python看作一个产品体验流程,那么我们正在逐步构建一种新的“使用范式”。第一篇,你学会让环境运行。第二篇,你理解数据和变量。而通过本篇即第三篇,你开始理解数据如何流动。
在AI时代,编程的门槛并没有消失,但它正在发生结构性的变化——记忆语法的重要性在下降,组织信息、设计流程、构建结构的能力正在上升。
当你逐渐习惯了一种更工程化的思考路径:先把问题拆成一组可管理的数据,再为数据建立结构和标签,然后让自动化流程去运行。当这种思维方式稳定下来,新的工具和新的语言,都会变成可迁移的能力,而不是新的学习成本。
从本篇开始,编程知识的深度和难度都在不断增加,但受制于篇幅,我并没有特别细的讲,而是把核心知识点精简再精简。因为更重要的是,在AI时代,任何基础的知识,都可以通过跟AI的对话,无限地细化。
因此,AI时代的编程学习,与其是学写代码,更重要的,是学会一种思维方式。
[空框|Reframe]