1. 使用内置函数和库
Python自带了很多高效的内置函数和库,它们通常比你自己写的代码要快得多。尽量使用这些现成的工具,而不是自己重新发明轮子。
示例:
# 不推荐:手动计算列表元素之和
def sum_list_manual(lst):
total = 0
for num in lst:
total += num
return total
# 推荐:使用内置sum函数
def sum_list_builtin(lst):
return sum(lst)
# 测试
numbers = [1, 2, 3, 4, 5]
print(sum_list_manual(numbers)) # 输出: 15
print(sum_list_builtin(numbers)) # 输出: 15
2. 使用列表推导式代替循环
列表推导式不仅更简洁,而且执行速度也更快。
示例:
# 不推荐:使用for循环创建平方数列表
squares_loop = []
for i in range(10):
squares_loop.append(i ** 2)
# 推荐:使用列表推导式
squares_comprehension = [i ** 2 for i in range(10)]
print(squares_loop) # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares_comprehension) # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
3. 使用生成器表达式节省内存
当你处理大数据集时,生成器表达式可以节省大量内存,因为它只在需要时生成数据。
示例:
# 不推荐:使用列表存储所有平方数
squares_list = [i ** 2 for i in range(1000000)]
# 推荐:使用生成器表达式
squares_generator = (i ** 2 for i in range(1000000))
# 计算总和
print(sum(squares_list)) # 需要大量内存
print(sum(squares_generator)) # 内存使用较少
4. 使用set
进行成员检查
集合(set
)的数据结构查找元素的时间复杂度是O(1),而列表(list
)是O(n)。因此,如果需要频繁进行成员检查,使用set
会更快。
示例:
# 不推荐:使用列表进行成员检查
my_list = list(range(1000000))
if 999999 in my_list:
print("Found!")
# 推荐:使用集合进行成员检查
my_set = set(range(1000000))
if 999999 in my_set:
print("Found!")
5. 使用字典代替多重条件判断
当有多个条件判断时,可以考虑使用字典来简化代码,并提高效率。