Python List 切片与 LLM API 调用实战指南
本文系统讲解 Python 列表切片的核心语法,并演示如何通过 OpenAI 兼容接口调用大语言模型,实现结构化商品文案的自动生成。
前言
Python 作为数据科学和人工智能领域的主流语言,其简洁的语法和丰富的生态使其成为调用大模型 API 的首选工具。本文将从 Python 列表的基础操作出发,逐步深入到切片(Slice)的高级用法,最终完成一个调用 LLM API 生成 Amazon 商品文案的完整实战案例。
一、Python 列表(List)基础
1.1 列表的特性
Python 中没有像 Java 或 C++ 那样的固定长度数组,取而代之的是 List------一个灵活、有序、可动态修改的通用容器:
python
names = ["张三", "李四", "王五", "赵六", "刘七"]
列表的核心特性:
| 特性 | 说明 |
|---|---|
| 动态长度 | 无需预先指定容量,随时增删元素 |
| 类型不约束 | 同一个列表可存储不同类型的数据 |
| 有序可修改 | 支持索引访问和原地修改 |
1.2 基本操作示例
python
L = ["张三", "李四", "王五", "赵六", "刘七"]
# 传统方式取前三个元素
r = []
for i in range(3): # range(n) 生成 0 到 n-1 的整数序列
r.append(L[i])
# 结果:['张三', '李四', '王五']
上述代码虽然可以运行,但较为繁琐。Python 提供了更简洁的解决方案------切片。
二、切片(Slice):Python 的高效元素截取
2.1 基本语法
切片是 Python 中用于截取序列(列表、字符串等)部分元素的语法,格式为:
python
sequence[start:stop:step]
| 参数 | 说明 |
|---|---|
start |
起始索引(包含),省略则默认为 0 |
stop |
结束索引(不包含),省略则默认为序列长度 |
step |
步长,省略则默认为 1 |
2.2 常用示例
python
L = ["张三", "李四", "王五", "赵六", "刘七"]
L[0:3] # ['张三', '李四', '王五'] --- 从索引 0 到 2
L[:3] # ['张三', '李四', '王五'] --- 省略 start,默认从 0 开始
L[1:3] # ['李四', '王五'] --- 从索引 1 到 2
L[-2:] # ['赵六', '刘七'] --- 负数索引,取最后两个
2.3 进阶用法
python
L = list(range(100)) # 生成 [0, 1, 2, ..., 99]
L[:10] # [0, 1, 2, ..., 9] --- 前 10 个元素
L[-10:] # [90, 91, ..., 99] --- 最后 10 个元素
L[:10:2] # [0, 2, 4, 6, 8] --- 前 10 个,步长为 2
L[::5] # [0, 5, 10, ..., 95] --- 全部元素,步长为 5
L[::-1] # [99, 98, ..., 1, 0] --- 反转序列
2.4 字符串切片
字符串作为序列类型,同样支持切片操作:
python
text = "ABCDEFG"
text[:3] # 'ABC'
text[::2] # 'ACEG'
text[::-1] # 'GFEDCBA'
2.5 实战:手写 trim 函数
利用切片和双指针思想,实现去除字符串首尾空格的功能:
python
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
实现思路:
- 左指针从左向右移动,跳过前导空格
- 右指针从右向左移动,跳过尾随空格
- 使用切片
s[left:right]截取有效内容
三、调用大语言模型 API
3.1 LLM 接口生态概述
当前大语言模型 API 的生态格局:
| 厂商 | 代表模型 | 接口特点 |
|---|---|---|
| OpenAI | GPT 系列 | 行业标准,Completion/Chat API |
| 部分国内厂商 | 各自主模型 | 兼容 OpenAI 接口格式 |
| Anthropic | Claude | 自有接口规范 |
| Gemini | 自有接口规范 |
关键优势:由于 OpenAI 的接口已成为事实标准,许多厂商选择兼容该格式,开发者只需学习一套调用方式即可切换不同模型。
3.2 环境准备
安装 OpenAI 官方 Python SDK:
bash
pip install openai
3.3 客户端初始化
python
from openai import OpenAI
client = OpenAI(
api_key="your-api-key", # API 密钥
base_url="https://your-endpoint/v1" # API 服务端点
)
COMPLETION_MODEL = "your-model-name"
注:Python 中实例化对象无需
new关键字,直接调用构造函数即可。
3.4 Prompt 设计原则
高质量的 Prompt 应遵循以下原则:
| 原则 | 说明 | 示例 |
|---|---|---|
| 目标清晰 | 明确表达任务目标 | "Compose product title within 20 words" |
| 分步描述 | 将复杂任务拆分为步骤 | 使用 1/2/3 编号 |
| 格式约束 | 指定输出格式便于解析 | "Output in JSON format" |
3.5 完整实战:商品文案生成
以下示例演示如何调用 LLM API 为中文商品生成英文 Amazon 文案:
python
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.
Output the result in json format with
three properties called title, selling_points and
price_range
"""
def get_response(prompt):
response = client.chat.completions.create(
model=COMPLETION_MODEL,
messages=[
{"role": "user", "content": prompt}
]
)
return response.choices[0].message.content
print(get_response(prompt))
3.6 输出结果
json
{
"title": "Inflatable PVC Frog Toy with LED Light for Kids Night Market Water Fun",
"selling_points": [
"Bright LED lights make the frog glow for exciting night play.",
"Made from durable PVC material, perfect for water and pool fun.",
"Lightweight and easy to inflate, deflate, and carry.",
"Attracts attention at markets and events, ideal for resale.",
"Safe and fun for children ages 3+, great for outdoor activities."
],
"price_range": "$8.99 - $14.99"
}
四、Jupyter Notebook:交互式开发环境
4.1 核心特性
Jupyter Notebook(.ipynb)是一种广泛使用的交互式开发环境:
- 代码单元(Cell):独立运行代码片段
- 文本单元(Markdown Cell):记录笔记和文档
- 即时输出:运行结果直接显示在代码下方
- 适合场景:数据分析、机器学习实验、学习记录
4.2 与传统开发方式的对比
传统 .py 文件开发流程:
编写完整代码 → 运行脚本 → 查看结果 → 调试修改
Notebook 开发流程:
编写代码片段 → 即时运行 → 查看结果 → 记录笔记 → 继续编写
Notebook 的即时反馈机制显著提升了学习和实验效率。
五、Python 与 JavaScript 对比速查
对于前端开发者,以下对比有助于快速理解 Python 语法:
| 操作 | JavaScript | Python |
|---|---|---|
| 创建列表 | [1, 2, 3] |
[1, 2, 3] |
| 取前 N 个 | arr.slice(0, n) |
lst[:n] |
| 取后 N 个 | arr.slice(-n) |
lst[-n:] |
| 每隔 N 个取 | arr.filter((_, i) => i % N === 0) |
lst[::N] |
| 反转序列 | arr.reverse() |
lst[::-1] |
| 去除空格 | str.trim() |
str.strip() |
| 字符串长度 | str.length |
len(str) |
| 模板字符串 | ${name} |
f"{name}" |
| 对象实例化 | new Client() |
Client() |
六、总结
本文系统介绍了以下内容:
- Python List:动态、灵活的通用容器
- Slice 切片 :
[start:stop:step]语法,高效截取序列元素 - LLM API 调用:通过 OpenAI 兼容接口调用大语言模型
- Prompt 工程:目标清晰、分步描述、格式约束
- Jupyter Notebook:交互式开发环境,适合学习与实验
掌握这些基础后,可以进一步探索更复杂的 LLM 应用场景,如多轮对话、函数调用(Function Calling)、流式输出等高级特性。
标签 :Python LLM API Slice Prompt Engineering