当前位置:首页>python>十三个Python性能技巧

十三个Python性能技巧

  • 2026-09-09 16:42:17
十三个Python性能技巧

在 Python 中,有许多语法和库的高级用法可以显著提升代码的简洁性、执行效率和维护性。以下为您整理的 213个独立且实用的 Python 技巧,每个都包含了具体的代码示例:

1. 列表推导式 (List Comprehension)

 🌟🌟🌟 替代 for 循环和 append 操作,提高可读性和性能,且可用于过滤条件。

# 传统循环squares = []for i in range(10):    squares.append(i ** 2)# 列表推导式squares = [i ** 2 for i in range(10)]

2. 字典推导式 (Dictionary Comprehension)

 🌟🌟🌟 比 dict()循环函数更简洁,特别适合根据列表元素映射为键值对。

nums = [1, 2, 3, 4]# 将数值翻倍并转为字典doubled = {x: x * 2 for x in nums}

3. *args与 **kwargs解包

 🌟🌟🌟 在函数调用中灵活传递参数,或在函数定义时接收任意数量的参数。

# 函数定义支持可变参数def print_items(*args, **kwargs):    for arg in args:        print(arg)    for kw in kwargs.items():        print(f"{kw[0]}: {kw[1]}")# 调用时print_items(1, 2, 3, name="Alice", age=20)

4.  身份判断用 is与 值判断用 ==

 🌟🌟🌟 使用 is 判断内存引用(身份)是否同源,使用 == 判断值是否相等。

a = [1]b = [1]c = aa == b   # 为 True (值相等)a is b   # 为 False (不同对象)c is a   # 为 True (同一个对象)

5. 使用 with进行上下文管理

 🌟🌟🌟  自动处理资源释放(如文件、数据库连接),即使发生异常也不会漏掉清理。

# 资源自动关闭withopen('example.txt', 'r', encoding='utf-8') as f:    content = f.read()# 即使下面出错,文件也会自动关闭

6. 使用 set()去重

 🌟🌟🌟  集合 (set) 是去除列表中重复项最高效的方式(时间复杂度接近 O(1))。

numbers = [1, 2, 2, 3, 1, 4]unique_nums = list(set(numbers))print(unique_nums)# 输出 # [1, 2, 3, 4]

7. 使用 enumerate()获取索引

 🌟🌟🌟  遍历列表同时获取索引,无需手动维护计数变量。

items = ['apple', 'banana', 'cherry']# 索引,值for i, item in enumerate(items):    print(f"索引{i}:{item}")# 输出 # 索引0:apple# 索引1:banana# 索引2:cherry

8. 使用 zip()合并多个迭代器

 🌟🌟🌟 将多个序列并行遍历,非常适用于多列数据处理。

# 两个序列,应相等长度,否则zip会以短的序列为主first = [1, 2, 3]second = ['a', 'b', 'c']for item1, item2 in zip(first, second):    print(item1, item2)# 输出 # (1,‘a’)# (2, 'b')# (3, 'c')

9. f-string(格式字符串)

 🌟🌟🌟  Python 3.6+ 推荐的格式化字符串方式,性能优于 % 格式化,支持表达式。

name = "Alice"age = 25# 简洁的格式化print(f"{name} is {age} years old.")# 支持在格式化中使用表达式print(f"Square of {2*2} is {2*2**2}")

10. 使用 lambda创建匿名函数 

🌟🌟🌟 适用于临时函数、高阶函数回调或排序键值定义。

numbers = [1, 2, 3, 4, 5]# 定义一个平方函数square = lambda x: x ** 2# 作为列表排序键sorted_numbers = sorted(numbers, key=lambda x: -x)

11. if __name__ == '__main__'检查

 🌟🌟🌟 防止脚本被作为模块导入时执行主逻辑代码。

import sysdef main():    # 实际业务逻辑    print("程序开始执行")# 检查当前是否在命令行中运行if __name__ == '__main__':    main()

12. try...except...else... 强化处理逻辑

 🌟🌟🌟 使用 else 块捕获异常后执行的代码,逻辑更清晰。

try:    value = 10    result = 5 / valueexcept ZeroDivisionError:    print("除零错误")else:    # 只有没有异常时执行    print(result)

13. 字典合并 {**d1, **d2}

 🌟🌟🌟 Python 3.5+ 支持字典解包与合并,比 dict.update()更简洁。

# 有共同key的字典 d1 = {'a': 1, 'b': 2}d2 = {'c': 3, 'b': 4}# 合并后 d2 的键值会覆盖 d1 的同名键值 merged = {**d1, **d2}print(merged)    # 输出 {'a': 1, 'b': 4, 'c': 3}

往期精彩:

1、Python入门合集

Python入门:01 何谓Python?
Python入门:02 工欲善其器,必先利其器
Python入门:03 程序运行
Python入门:04 编程常识
Python入门:05 变量(1)-何谓变量?
Python入门:05 变量(2)-数据类型
Python入门:05 变量(3)-类型转换
Python入门:06 数据运算
Python入门:07 字符串(1)-基础
Python入门:07 字符串(2)-切片操作
Python入门:07 字符串(3)-字符串格式化的三种方法
Python入门:08 顺序、选择与循环
Python入门:09 函数
Python入门:10 类(1)-类的定义
Python入门:10 类(2)-类的继承
Python入门:11 模块与包
Python入门:12 文件操作
Python入门:13 异常处理
Python入门:14 OS操作
Python入门(番外篇):命名空间和作用域
Python入门(番外篇):函数装饰器
Python入门(番外篇):推导式
Python入门(番外篇):生成器
Python入门(番外篇):上下文管理器

2、Pandas入门合集

Pandas入门:01 数据结构之Series

Pandas入门:02 数据结构之DataFrame

Pandas入门:03 切片

Pandas入门:04 概览、属性、广播与视图

Pandas入门:05 空值的处理

Pandas入门:06 数据迭代

Pandas入门:07 批量计算

Pandas入门:08 分组计算与分类汇总

Pandas入门:09 合并与匹配

Pandas入门:10 滚动计算

Pandas入门:11 环比变化分析

Pandas入门:12 时间序列分析基础

Pandas入门:13 表的重构/变形

Pandas入门:14 数据分裂

Pandas技巧:数据选择1

Pandas技巧:数据选择2

Pandas技巧:字符串数据处理

Pandas技巧:数据可视化

Pandas技巧:索引

Pandas技巧:层次化索引

Pandas技巧:连续数据的分组

☆☆☆ End ☆☆☆转角  ·  遇见  ·  程序猿
-------------------------
那是一抹淡淡的微光

它是数字世界里的一把杀猪刀

却总能巧夺天工

它的世界是纯粹0、1组合

却总能创造无尽幻想

......

本公众号关注数据价值分析、编程学习,将不定期更新社会热点数据分析结果、编程技巧,分享数据分析工具、方法、学习等内容,欢迎有兴趣的小伙伴加入。

最新文章

随机文章