Lazy loaded image
Agent相关分享
Python教学[02]-五大容器知识点
Words 1370Read Time 4 min
2026-4-20
2026-5-7
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] 的思考过程如下:
  1. 找起点 (start):我们要从 'b' 开始截取,'b' 的索引是 1,所以 start1
  1. 算步长 (step):从 'b'(索引1)到 'e'(索引4),中间跨越了几个位置?4 - 1 = 3。也就是说,每次需要往后跳 3 步,所以 step3
  1. 定终点 (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))
返回一个生成器对象(极大节省内存)
上一篇
Python教学[03]-函数的调用和文件读取
下一篇
Python教学[01]-环境安装