# 使用生成器表达式
large_gen =(x*2for x inrange(10**6))for x in large_gen:pass# 内存友好型迭代
3. 异常处理模板
safe_list =[1,'a',3,'text']for item in safe_list:try:print(item +10)except TypeError:print(f"Invalid operation for {type(item)}")
三、性能优化深度剖析
1. 时间复杂度对比实验
import timeit
# 测试数据
test_list =list(range(100000))deftest_for_loop():
total =0for num in test_list:
total += num
return total
deftest_while_loop():
total =0
i =0while i <len(test_list):
total += test_list[i]
i +=1return total
print("For loop time:", timeit.timeit(test_for_loop, number=100))print("While loop time:", timeit.timeit(test_while_loop, number=100))
典型输出:
For loop time:0.85秒
While loop time:1.27秒
2. JIT编译优化应用
# 使用Numba加速from numba import jit
@jit(nopython=True)defjit_sum(arr):
total =0for x in arr:
total += x
return total
large_array =list(range(10**7))
jit_sum(large_array)# 首次运行编译耗时%timeit jit_sum(large_array)# 对比原始循环速度
四、典型错误场景与防御策略
1. 遍历修改陷阱
危险操作示范:
numbers =[1,2,3,4]for num in numbers:if num %2==0:
numbers.remove(num)# 导致跳过元素print(numbers)# 输出可能为[1, 3]
优化解决方案:
# 创建临时副本for num in numbers.copy():if num %2==0:
numbers.remove(num)# 倒序删除法for i inreversed(range(len(numbers))):if numbers[i]%2==0:del numbers[i]
2. 深层复制必要性
matrix =[[1,2],[3,4]]for row in matrix:
row.append(0)# 直接修改原数据import copy
safe_matrix = copy.deepcopy(matrix)for row in safe_matrix:
row.append(0)# 不影响原始数据
# 特征工程批量处理
raw_features =[]for sample in dataset:
processed =[x_normalize(x)for x in sample]
raw_features.append(process_features(processed))# 改用生成器减少内存占用
feature_gen =(process_features(x)for x in dataset)