type
Post
status
Published
date
Apr 20, 2026
slug
summary
tags
category
Agent相关分享
password
1.容器的特点:
特性 / 容器 | 🧵 字符串 (String) | 📦 列表 (List) | 🔒 元组 (Tuple) | 🧲 集合 (Set) |
符号定义 | '...' 或 "..." | [...] | (...) | {...} |
有序性 | ✅ 有序(支持索引和切片) | ✅ 有序(支持索引和切片) | ✅ 有序(支持索引和切片) | ❌ 无序(不支持索引和切片) |
可变性 | ❌ 不可变(修改会生成新对象) | ✅ 可变(可增删改元素) | ❌ 不可变(元素指向不可变) | ✅ 可变(可增删,但元素自身必须不可变) |
元素重复 | ✅ 允许重复字符 | ✅ 允许重复元素 | ✅ 允许重复元素 | ❌ 不允许重复(自动去重) |
存储数据类型 | 仅限字符 | 任意类型(可混合) | 任意类型(可混合) | 必须是可哈希(不可变)类型(如数字、字符串、元组) |
主要应用场景 | 文本处理、信息展示 | 存储按顺序排列的数据集合 | 存储固定不变的数据、函数返回多值 | 数据去重、数学集合运算(交、并、差集) |
常用增/改方法 | replace(old, new)
join(iterable) | append(x)
insert(i, x)
extend(iterable) | (不可变,无此类方法) | add(x)
update(iterable) |
常用删/查方法 | find(sub)
count(sub)
split(sep) | pop([i])
remove(x)
clear()
index(x) | index(x)
count(x) | remove(x)
discard(x)
pop()
clear() |
其他常用方法 | strip() (去除首尾空白)
upper() / lower() | sort() (就地排序)
reverse() (就地反转) | (方法极少,极其轻量) | union() (并集)
intersection() (交集)
difference() (差集) |
2.常见切片实战与作用
用
f1 = ['a', 'b', 'c', 'd', 'e'] 作为例子,看看不同切片方式的作用:1. 提取连续的子集(指定首尾)
- 代码:
f1[1:4]
- 结果:
['b', 'c', 'd']
- 作用: 截取从索引 1 开始,到索引 4 结束(不含索引 4
'e')的部分。
2. 从开头截取 / 截取到结尾(省略参数)
- 代码:
f1[:3]
- 结果:
['a', 'b', 'c']
- 代码:
f1[2:]
- 结果:
['c', 'd', 'e']
- 作用: 快速获取前 N 个元素或去除前 N 个元素。
3. 极其常用的技巧:列表逆序(负数步长)
- 代码:
f1[::-1]
- 结果:
['e', 'd', 'c', 'b', 'a']
- 作用: 步长为 -1 意味着“从右向左,每次走一步”。这是 Python 中反转字符串或列表最简洁的方法。
4. 快速克隆(浅拷贝)
- 代码:
f2 = f1[:]
- 结果: 生成一个全新的
['a', 'b', 'c', 'd', 'e']赋值给f2。
- 作用: 如果你直接写
f2 = f1,两者会指向同一个内存地址,修改f2会影响f1。使用[:]相当于复制了一份数据,保证原数据的安全。
进阶问题:从
['a', 'b', 'c', 'd', 'e'] 中刚好截取出 'b' 和 'e'🎯 直接答案
f1[1::3] 或者 f1[1:5:3]运行结果都会是:
['b', 'e']🕵️♂️ 逻辑拆解(为什么是这样写?)
我们再把列表和它对应的索引(Index)列出来:
0->'a'
1->'b'(目标1)
2->'c'
3->'d'
4->'e'(目标2)
编写切片
[start:stop:step] 的思考过程如下:- 找起点 (
start):我们要从'b'开始截取,'b'的索引是1,所以start是1。
- 算步长 (
step):从'b'(索引1)到'e'(索引4),中间跨越了几个位置?4 - 1 = 3。也就是说,每次需要往后跳 3 步,所以step是3。
- 定终点 (
stop):因为'e'是列表的最后一个元素,我们可以直接省略stop参数,让它默认切到结尾;如果你非要写出来,因为“顾头不顾尾”,终点需要写成5。
把它们拼起来,就是
f1[1::3]。它告诉 Python:“从索引 1 开始,每隔 3 个位置抓取一个元素,直到列表结束。”💡 为什么要写终点 5?
因为列表最大索引只有 4。在切片中,如果你想包含最后一个元素(索引 4),你的结束位置就得写成4 + 1 = 5
3.推导式
推导式的真正作用在于:在生成的过程中,对数据进行“加工”或“过滤”。
推导式类型 | 外层符号 | 核心语法结构 | 经典代码示例 | 结果 |
列表推导式
(List) | [...] | [表达式 for 变量 in 可迭代对象 if 条件] | [x * 2 for x in range(4)] | [0, 2, 4, 6] |
集合推导式
(Set) | {...} | {表达式 for 变量 in 可迭代对象 if 条件} | {x % 2 for x in range(5)} | {0, 1} (自动去重) |
字典推导式
(Dict) | {...} | {键:值 for 变量 in 可迭代对象 if 条件} | {x: x**2 for x in (1, 2, 3)} | {1: 1, 2: 4, 3: 9} |
生成器表达式
(Generator) | (...) | (表达式 for 变量 in 可迭代对象 if 条件) | (x for x in range(10000)) | 返回一个生成器对象(极大节省内存) |
- Author:Ashland
- URL:http://preview.tangly1024.com/article/348cccc0-3782-80d0-a1c0-f63e739c2252
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!





