1. 列表浅拷贝导致数据意外修改
错误代码:
a = [1, 2, [3, 4]]
b = a.copy() # 浅拷贝
b[2][0] = 999
print(a) # [1, 2, [999, 4]](原列表被修改!)
正确做法:使用 copy.deepcopy
处理嵌套结构:
import copy
b = copy.deepcopy(a)
2. 字典访问未处理 KeyError
错误代码:
d = {"name": "Alice"}
print(d["age"]) # KeyError: 'age'
正确做法:用 get()
或 try-except
:
print(d.get("age", 18)) # 返回默认值 18
# 或
try:
print(d["age"])
except KeyError:
print("Key不存在")
3. 集合中存储可变对象
错误代码:
s = set()
s.add([1, 2]) # 报错:TypeError: unhashable type: 'list'
原因:集合要求元素必须可哈希(不可变)。
正确做法:改用元组:
s.add(tuple([1, 2]))
4. 生成器的一次性使用问题
错误代码:
gen = (x for x in range(3))
print(list(gen)) # [0, 1, 2]
print(list(gen)) # [](生成器已耗尽)
正确做法:如需重复使用,转换为列表或重新创建生成器。