一、数据结构
1. 字符串 (String)
基本特性
- 不可变序列类型
- 可以使用单引号(
'
)或双引号("
)定义
- 支持Unicode字符
常用操作
s = "Hello Python"
# 索引和切片
print(s[0]) # 'H' (索引从0开始)
print(s[6:12]) # 'Python' (切片)
# 常用方法
print(s.upper()) # 转大写
print(s.lower()) # 转小写
print(s.split()) # 分割字符串 ['Hello', 'Python']
print(" ".join(["Hello", "World"])) # 合并字符串
# 格式化
name = "Alice"
print(f"Hello, {name}!") # f-string (Python 3.6+)
print("Hello, {}!".format(name)) # format方法
转义字符
\n
换行
\t
制表符
\\
反斜杠
\'
单引号
\"
双引号
2. 列表 (List)
基本特性
- 可变序列类型
- 可以包含不同类型的元素
- 使用方括号
[]
定义
常用操作
lst = [1, 2, "a", 'b']
# 增删改查
lst.append(3) # 末尾添加 [1, 2, 'a', 'b', 3]
lst.insert(1, "x") # 指定位置插入 [1, 'x', 2, 'a', 'b', 3]
lst.remove("a") # 删除元素 [1, 'x', 2, 'b', 3]
value = lst.pop(2) # 移除并返回指定位置元素 [1, 'x', 'b', 3]
# 列表操作
lst_copy = lst.copy() # 浅拷贝
lst.reverse() # 反转列表
lst.sort() # 排序(同类型元素)
# 列表推导式
squares = [x**2 for x in range(10)]
3. 元组 (Tuple)
基本特性
- 不可变序列类型
- 使用圆括号
()
定义
- 可以包含不同类型的元素
常用操作
tup = (1, 2, '3', "4,5")
# 访问元素
print(tup[0]) # 1
print(tup[1:3]) # (2, '3')
# 特殊情况
single_tuple = (1,) # 单元素元组必须有逗号
empty_tuple = () # 空元组
# 元组解包
a, b, c, d = tup
4. 集合 (Set)
基本特性
- 无序不重复元素集
- 可变类型(但有不可变的frozenset)
- 使用花括号
{}
或set()
函数定义
常用操作
s = {1, 2, 3}
# 集合运算
s.add(4) # 添加元素
s.remove(2) # 移除元素(不存在会报错)
s.discard(5) # 安全移除(不存在不报错)
# 集合操作
a = {1, 2, 3}
b = {2, 3, 4}
print(a | b) # 并集 {1, 2, 3, 4}
print(a & b) # 交集 {2, 3}
print(a - b) # 差集 {1}
5. 字典 (Dictionary)
基本特性
- 键值对映射
- 键必须是不可变类型
- 使用花括号
{}
或dict()
函数定义
常用操作
dic = {1: "first", 2: "second", "three": 3}
# 增删改查
dic["four"] = 4 # 添加键值对
del dic[1] # 删除键值对
value = dic.get(2) # 安全获取值(避免KeyError)
# 字典方法
keys = dic.keys() # 所有键
values = dic.values() # 所有值
items = dic.items() # 所有键值对
# 字典推导式
square_dict = {x: x**2 for x in range(5)}
二、文件操作
1. 打开文件
基本语法
f = open("文件路径", "模式", encoding="编码")
常用模式
模式 |
描述 |
'r' |
只读(默认) |
'w' |
写入(覆盖) |
'a' |
追加 |
'x' |
创建新文件 |
'b' |
二进制模式 |
't' |
文本模式(默认) |
'+' |
读写模式 |
推荐方式(使用with语句)
with open("file.txt", "r", encoding="utf-8") as f:
# 文件操作
# 自动关闭文件
2. 写入文件
常用方法
with open("output.txt", "w") as f:
f.write("Hello World\n") # 写入字符串
f.writelines(["line1\n", "line2\n"]) # 写入多行
注意事项
- 写入前确保文件以写入模式打开(
'w'
或'a'
)
- 换行符
\n
需要手动添加
- 写入非字符串数据需要先转换
3. 读取文件
常用方法
with open("input.txt", "r") as f:
content = f.read() # 读取全部内容
line = f.readline() # 读取一行
lines = f.readlines() # 读取所有行(列表)
# 逐行读取(推荐方式)
for line in f:
print(line.strip()) # strip()移除首尾空白
读取大文件
# 分块读取
with open("large_file.txt", "r") as f:
while True:
chunk = f.read(1024) # 每次读取1024字节
if not chunk:
break
process(chunk)
4. 关闭文件
重要原则
- 文件使用完毕后必须关闭
- 使用
with
语句可自动关闭
- 手动关闭方式:
f = open("file.txt")
try:
# 文件操作
finally:
f.close()
三、数据结构对比
类型 |
可变性 |
有序性 |
元素要求 |
主要用途 |
字符串 |
不可变 |
有序 |
字符 |
文本处理 |
列表 |
可变 |
有序 |
任意 |
数据集合 |
元组 |
不可变 |
有序 |
任意 |
固定数据 |
集合 |
可变 |
无序 |
可哈希 |
去重/集合运算 |
字典 |
可变 |
无序(3.7+有序) |
键可哈希 |
键值映射 |
四、文件操作最佳实践
- 总是使用
with
语句管理文件
- 明确指定文件编码(推荐
utf-8
)
- 大文件使用迭代方式读取
- 写入文件时注意换行符
- 二进制文件使用
'rb'
或'wb'
模式
五、补充知识
1. 深拷贝与浅拷贝
import copy
original = [1, 2, [3, 4]]
shallow_copy = copy.copy(original) # 浅拷贝
# 修改浅拷贝的外层元素(不影响原对象)
shallow_copy[0] = 100
print(original) # [1, 2, [3, 4]]
print(shallow_copy) # [100, 2, [3, 4]]
# 修改浅拷贝的嵌套对象(会影响原对象!)
shallow_copy[2][0] = 300
print(original) # [1, 2, [300, 4]] # 原对象也被修改!
print(shallow_copy) # [100, 2, [300, 4]]
import copy
original = [1, 2, [3, 4]]
deep_copy = copy.deepcopy(original) # 深拷贝
# 修改深拷贝的外层元素(不影响原对象)
deep_copy[0] = 100
print(original) # [1, 2, [3, 4]]
print(deep_copy) # [100, 2, [3, 4]]
# 修改深拷贝的嵌套对象(不影响原对象!)
deep_copy[2][0] = 300
print(original) # [1, 2, [3, 4]] # 原对象不受影响
print(deep_copy) # [100, 2, [300, 4]]
2. 默认字典(collections.defaultdict)
from collections import defaultdict
dd = defaultdict(list)
dd["key"].append(1) # 自动初始化空列表
3. JSON文件操作
import json
# 写入JSON
with open("data.json", "w") as f:
json.dump({"name": "Alice"}, f)
# 读取JSON
with open("data.json", "r") as f:
data = json.load(f)