最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Notebook环境中探索List与Slice的LLM奇妙之旅
时间:2026-05-29 13:30:01 编辑:袖梨 来源:一聚教程网
Python作为AI时代的首选语言,在Notebook环境中展现出独特魅力。本文将通过List操作、Slice技巧和LLM调用,带你体验Python的高效与灵活。
人生苦短,我用Python:Notebook环境下的List、Slice与LLM大冒险
前言:从「Hello World」到「Hello AI」的神奇旅程
那天我正专注编写JavaScript代码时,突然收到一个有趣建议:

这个提议让我立刻打开Jupyter Notebook,开启全新的Python探索之旅。
一、Jupyter Notebook:代码界的「活字印刷术」
1.1 什么是Notebook?
Jupyter Notebook(使用.ipynb扩展名)是一个革命性的编程环境:
Notebook = 笔记本你可以:
- 边写代码
- 边运行
- 边记笔记
- 边出结果就像你的电子笔记本,但这个本子会跑代码!
1.2 Notebook长什么样?
# Cell 1: 第一个代码块
print("my first notebook")# 运行结果:
# my first notebook
# Cell 2: 定义一个列表
L = ["鸡蛋仙", "刚刚", "明明"]
print(L[0], L[1], L[2])# 运行结果:
# 鸡蛋仙 刚刚 明明
传统开发与Notebook对比:
传统开发:
写代码 → 保存文件 → 运行 → 看结果 → 改代码 → 保存 → 运行...Notebook开发:
写代码 → 按Shift+Enter → 立刻看结果 → 改代码 → 按Shift+Enter → 立刻看结果...
使用体验:Notebook将代码编辑、执行和结果展示完美结合,比传统IDE更直观高效。
二、Python List:比JavaScript Array更「随意」的容器
2.1 List是什么?
Python的List功能类似JavaScript的Array,但具有更强的灵活性。
# 定义一个列表
L = ["鸡蛋仙", "刚刚", "明明"]# 访问元素
print(L[0]) # 鸡蛋仙
print(L[1]) # 刚刚
print(L[2]) # 明明
2.2 List vs Array:谁更任性?
| 特性 | Python List | JavaScript Array |
|---|---|---|
| 容量 | 动态,不用声明 | 动态,不用声明 |
| 类型 | 不约束,啥都能装 | 不约束,但有类型数组 |
| 长度 | 随时可变 | 随时可变 |
| 语法 | [] 或 list() | [] 或 Array() |
# Python List:我是百宝箱
mixed_list = [1, "hello", 3.14, True, None, [1, 2, 3]]
print(mixed_list)
# 输出:[1, 'hello', 3.14, True, None, [1, 2, 3]]# JavaScript Array:我也可以,但我不说
// const mixedArray = [1, "hello", 3.14, true, null, [1, 2, 3]];
2.3 为什么Python适合AI,JavaScript不适合?
数值计算对比:
# Python:我有高精度数字类型
a = 0.1
b = 0.2
print(a + b) # 0.3 完美!
JavaScript的局限:
// JavaScript:我有Number类型,但我不精
const a = 0.1;
const b = 0.2;
console.log(a + b); // 0.30000000000000004 /*
JavaScript内心OS:
"我是网页脚本出身,精于交互
计算这种事...抱歉我不太行"
*/
语言特性对比:
| 语言 | 适合领域 |
|---|---|
| Python | 机器学习、爬虫、数据分析、科学计算 |
| JavaScript | 页面交互、前端开发、浏览器脚本 |
结论:两种语言各有所长,但在AI开发领域Python优势明显。
三、Slice切片:Python的「作弊神器」
3.1 什么是切片?
切片(Slice)功能可以轻松提取列表中的部分元素。
# 定义一个列表
L = ["鸡蛋仙", "刚刚", "明明"]# 切片操作
print(L[0:3]) # ['鸡蛋仙', '刚刚', '明明'] - 取所有
print(L[:3]) # ['鸡蛋仙', '刚刚', '明明'] - 从头开始
print(L[1:3]) # ['刚刚', '明明'] - 从索引1到2
print(L[-2:]) # ['刚刚', '明明'] - 取最后两个
3.2 切片的语法糖
# range() 生成序列
L = list(range(100)) # 0到99的列表
print(L)
# [0, 1, 2, 3, ... 99]
前10个元素:
print(L[:10])
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
后10个元素:
print(L[-10:])
# [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
每隔3个取一个:
print(L[:10:3])
# [0, 3, 6, 9]
所有元素每隔5个取一个:
print(L[::5])
# [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
3.3 切片可视化
列表切片图解索引: 0 1 2 3 4 5 6 7 8 9
数据: [0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
↑ ↑
起点 终点L[:7] → [0, 1, 2, 3, 4, 5, 6] 取前7个
L[3:] → [3, 4, 5, 6, 7, 8, 9] 从索引3开始取
L[2:7] → [2, 3, 4, 5, 6] 取索引2到6
L[::2] → [0, 2, 4, 6, 8] 每隔1个取
L[::3] → [0, 3, 6, 9] 每隔2个取
3.4 实战:去除字符串首尾空格
方法1:用strip()(简单粗暴) :
def trim(s):
return s.strip()print(trim(" hello world "))
# 输出:hello world
方法2:用切片(双指针思想) :
def trim(s):
# 找到第一个非空格的索引
left = 0
while left < len(s) and s[left] == ' ':
left += 1
# 找到最后一个非空格的索引
right = len(s)
while right > left and s[right - 1] == ' ':
right -= 1
# 切片截取
return s[left:right]print(trim(" hello world "))
# 输出:hello world
方法对比:
方法1 strip():简单,但调用了内置函数
方法2 切片:稍微复杂,但理解了底层原理面试官问:「请手写trim函数?」
你:「我会切片!」
四、调用LLM:Python与AI的第一次约会
4.1 LLM厂商大盘点
LLM厂商一览1. OpenAI(GPT系列)
- 基于Google开源的Transformer架构
- 引领了2022年底的生成式AI浪潮
- 行业标准制定者2. DeepSeek(国产之光)
- 兼容OpenAI接口
- 性价比高
- 国内开发者的首选3. Google(Gemini)
- 背靠Google强大的技术实力
- 多模态能力强4. Anthropic(Claude)
- 安全性强
- 对话体验好
- 有自己的特色
4.2 ModelScope:阿里的AI模型库
ModelScope = Model(模型)+ Scope(空间)
ModelScope是什么?- 阿里达摩院开源的模型社区
- 提供了大量预训练模型
- 支持NLP、计算机视觉等任务
- 像GitHub,但专门放AI模型
4.3 用Python调用DeepSeek API
Step 1:安装依赖:
pip install openai
Step 2:编写代码(这段代码有bug,请注意!):
# 引入OpenAI客户端
from openai import OpenAI# 实例化客户端,配置DeepSeek API
client = OpenAI(
api_key="your-api-key-here",
base_url="https://api.deepseek.com/v1"
)# 选择的模型
COMPLETION_MODEL = "deepseek-chat"# 构造Prompt(亚马逊产品场景)
prompt = """
Consideration product: 工厂现货PVC充气青蛙夜市地摊热卖充气玩具发光蛙儿儿童水上玩具1. Compose human readable product title used on Amazon in english within 20 words.
2. Write 5 selling points for the products in Amazon
3. Evaluate a price range for this product in U.S.
4. Output the result in json format with three properties called title, selling_point and price_range
"""# 定义获取响应的函数
def get_response(prompt):
response = client.chat.completions.create(
model=COMPLETION_MODEL,
messages=[ # ️ 注意:这里必须是 messages(复数)!
{
"role": "user",
"content": prompt
}
]
)
return response.choices[0].message.content# 调用函数
print(get_response(prompt))
4.4 ️ 踩坑经验:messages vs message
常见错误:
# 错误写法(message是单数)
response = client.chat.completions.create(
model=COMPLETION_MODEL,
message=[ # 这个会报错!
{"role": "user", "content": prompt}
]
)# 正确写法(messages是复数)
response = client.chat.completions.create(
model=COMPLETION_MODEL,
messages=[ # 必须是复数!
{"role": "user", "content": prompt}
]
)
报错信息:
TypeError: Missing required arguments;
Expected either ('messages' and 'model')
or ('messages', 'model' and 'stream') arguments to be given
经验总结:API参数必须严格遵循文档规范,细节决定成败。
五、Prompt Engineering:和AI说话的的艺术
5.1 什么是Prompt?
Prompt是与AI模型沟通的关键指令,直接影响模型输出质量。
5.2 Prompt三要素
优秀Prompt的三大要素1. 清晰且详细的表达目标
- 不要说:「帮我写代码」
- 要说:「写一个Python函数,输入是一个整数数组,输出是去重后的数组」2. 分步骤
- 不要说:「介绍一下Python」
- 要说:「1. 介绍Python的历史 2. 介绍Python的特点 3. 介绍Python的应用场景」3. 约束返回格式
- 不要说:「给我一些数据」
- 要说:「以JSON格式返回数据,包含name、age、city三个字段」
5.3 实战:让AI帮你写亚马逊产品描述
prompt = """
请为以下产品完成以下任务:产品:工厂现货PVC充气青蛙夜市地摊热卖充气玩具发光蛙儿儿童水上玩具任务:
1. 写一个亚马逊产品标题(英文,不超过20个词)
2. 写5个产品卖点(英文)
3. 评估美国市场的价格区间输出格式:JSON,包含以下字段
- title: 产品标题
- selling_point: 5个卖点的数组
- price_range: 价格区间字符串请确保输出是有效的JSON格式,方便程序解析。
"
AI返回结果示例:
{
"title": "PVC Inflatable Glowing Frog Toy for Kids Water Fun Party Pool Beach",
"selling_point": [
"Durable PVC material, safe and non-toxic for children",
"Built-in LED lights for glowing effect at night",
"Easy to inflate and deflate for convenient storage",
"Perfect for pool, beach, and backyard water play",
"Great gift for kids birthday parties and summer activities"
],
"price_range": "$8.99 - $15.99"
}
5.4 为什么约束JSON格式很重要?
有JSON vs 无JSON的对比有JSON格式:
- AI输出结构化数据
- 程序可以直接解析
- 方便后续处理
- 可以提取特定字段无JSON格式:
- AI输出自由文本
- 需要文本解析
- 可能格式不稳定
- 难以自动化
六、实战案例:批量处理亚马逊产品
6.1 需求分析
假设你有1000个产品需要生成亚马逊描述,你会怎么做?
手动操作(累死你):
- 打开ChatGPT
- 复制粘贴产品信息
- 复制返回结果
- 重复1000次
- 预估时间:500小时 用Python + API(优雅):
- 读取产品列表
- 批量调用API
- 自动保存结果
- 预估时间:2小时
6.2 批量调用示例
import json
from openai import OpenAI# 初始化客户端
client = OpenAI(
api_key="your-api-key",
base_url="https://api.deepseek.com/v1"
)# 产品列表
products = [
"PVC充气青蛙玩具",
"儿童泳池浮床",
"沙滩排球套装",
# ... 1000个产品
]def generate_amazon_description(product_name):
"""生成亚马逊产品描述"""
prompt = f"""
产品:{product_name}
请生成:
1. 亚马逊标题(英文,不超过20词)
2. 5个卖点
3. 价格区间
输出JSON格式。
"
response = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role":
相关文章
-
异环魔女之家 进入方法与全流程通关攻略
05-30
-
漫蛙漫画网页入口在哪
05-30
-
Ubuntu如何进行全盘加密设置
05-30
-
Archive of Our Own官方网站入口汇总 AO3网页端访问地址
05-30
-
因特智能AI视觉攻克半导体光罩纳米级检测卡脖子难题
05-30
-
心跳陷落阵营势力选择指南:详细解析各阵营特色与角色搭配建议
05-30