Python初学者避坑指南(中篇):数据结构与函数进阶陷阱

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))  # [](生成器已耗尽)

正确做法:如需重复使用,转换为列表或重新创建生成器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值