1. 列表生成式
列表生成式是Python中一种简洁高效的数据处理方式,适用于快速生成和筛选列表。传统方式需要使用for循环和append方法逐个添加元素,而列表生成式只需一行代码即可完成相同功能。例如,生成0到9的平方列表:squares = [x2 for x in range(10)]。此外,还可以添加条件判断,如只保留偶数平方:even_squares = [x2 for x in range(10) if x % 2 == 0]。这种语法不仅运行效率更高,代码可读性也得到显著提升。
2. 使用enumerate获取索引和值
在遍历序列时,通常需要同时访问元素和其索引。初学者可能会使用range(len(sequence))的方式,但更优雅的做法是使用内置函数enumerate。它返回一个包含索引和值的元组迭代器,代码更简洁且不易出错。例如:for index, value in enumerate(['a', 'b', 'c']): print(index, value)。还可以通过start参数指定起始索引值,如enumerate(sequence, start=1)。这种方式避免了手动管理索引变量,减少了代码错误的可能性。
3. 使用zip并行迭代多个序列
当需要同时遍历多个等长序列时,zip函数能够将多个可迭代对象打包成元组序列,实现并行迭代。例如,同时遍历姓名列表和分数列表:for name, score in zip(names, scores): print(f{name}: {score})。与使用索引相比,zip使代码更加清晰且易于维护。需要注意的是,当序列长度不同时,zip会以最短的序列为准截断,如需处理不等长情况可使用itertools.zip_longest。
4. 使用collections模块中的数据结构
Python标准库的collections模块提供了多种高效的数据结构。defaultdict可自动初始化缺失的键值,避免KeyError异常;Counter能够快速统计元素出现次数;deque支持高效的双端队列操作。例如,使用Counter统计词频:from collections import Counter; word_count = Counter(text.split())。这些专用数据结构比手工实现相同功能更加高效且不易出错。
5. 利用生成器处理大数据集
生成器允许按需生成值,而不是一次性创建整个数据集,极大节省内存空间。使用yield语句定义生成器函数,或使用生成器表达式(expression for item in iterable)。例如,处理大文件时逐行读取:def read_large_file(file): while True: line = file.readline(); if not line: break; yield line。这种方式避免将整个文件加载到内存,适合处理GB级别的大数据文件。
6. 使用f-string进行字符串格式化
Python 3.6引入的f-string提供了最简洁直观的字符串格式化方式。它允许在字符串字面量中直接嵌入表达式,代码可读性极高。例如:name = Alice; age = 25; print(f{name} is {age} years old)。f-string支持表达式计算、格式化规范(如保留小数位数:f{3.14159:.2f})甚至函数调用,比传统的%格式化和str.format()方法更加高效和易用。
7. 使用with语句管理资源
with语句通过上下文管理器自动管理资源(如文件、网络连接),确保资源被正确释放,即使发生异常也是如此。传统方式需要手动调用close()方法,而with语句使代码更加简洁安全。例如文件操作:with open('file.txt', 'r') as f: content = f.read()。文件会在with块结束后自动关闭,避免了资源泄漏问题。自定义类也可以通过实现__enter__和__exit__方法支持with语句。
8. 使用lambda表达式编写简洁函数
lambda表达式用于创建小型匿名函数,适合需要函数对象但不想正式定义函数的场景。语法为:lambda parameters: expression。常与map、filter、sorted等函数配合使用。例如,按字符串长度排序:sorted(words, key=lambda x: len(x))。虽然lambda函数只能包含单个表达式,但在简单操作场景下能大幅减少代码量,提高表达力。
9. 使用装饰器增强函数功能
装饰器是修改或增强函数行为的强大工具,遵循DRY(Don't Repeat Yourself)原则。通过在函数定义前添加@decorator_name使用。例如,计时装饰器:import time; def timer(func): def wrapper(args, kwargs): start = time.time(); result = func(args, kwargs); end = time.time(); print(fTime taken: {end - start}); return result; return wrapper。使用@timer装饰的函数会自动输出执行时间,而无需修改原函数代码。
10. 使用异常处理提高代码健壮性
合理的异常处理能够使程序在遇到错误时优雅降级而非崩溃。使用try-except块捕获和处理异常,可针对不同类型异常采取不同处理策略。例如:try: result = 10 / number except ZeroDivisionError: print(Cannot divide by zero) except TypeError: print(Invalid input type)。还可以使用else子句处理无异常情况,finally子句执行清理操作。恰当的异常处理是编写稳健应用程序的关键。
627

被折叠的 条评论
为什么被折叠?



