跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python算法

Python 入门高效编程技巧指南

Python 提供了多种高效编程技巧,涵盖变量交换、推导式、计数器、JSON 格式化及迭代工具等核心功能。详细解析了列表、字典推导式的用法,介绍了 collections 和 itertools 模块的高级特性,并通过 FizzBuzz 等实例展示了简洁的代码实现方式。同时修正了旧版本语法,确保代码在 Python 3 环境下运行,帮助开发者提升编码效率与可读性。

涅槃凤凰发布于 2025/2/6更新于 2026/10/2477 浏览
Python 入门高效编程技巧指南

Python 入门高效编程技巧指南

Python 以其简洁的语法和强大的标准库著称,适合快速开发。本文整理了 Python 编程中的常用高效技巧,涵盖变量操作、数据结构推导、内置模块使用及代码优化等方面,帮助开发者编写更简洁、可读性更强的代码。

01 交换变量

在 C++ 等语言中,交换两个变量的值通常需要引入一个临时变量。Python 支持元组解包(Tuple Unpacking),可以一行代码完成交换。

a = 3
b = 6
a, b = b, a
print(a)
print(b)

原理说明:右侧 b, a 会先被计算为一个元组 (6, 3),然后左侧的 a, b 依次接收元组中的值。这种方式不仅简洁,而且避免了临时变量的内存开销。

02 字典推导与集合推导

列表推导式(List Comprehensions)是 Python 的标志性特性。从 Python 3.1 开始,相同的语法也适用于创建集合(Set)和字典(Dictionary)。

集合推导

some_list = [1, 2, 3, 4, 5, 2, 5, 1, 4, 8]
even_set = {x for x in some_list if x % 2 == 0}
print(even_set)
# 输出:{2, 4, 8}(顺序可能不同)

字典推导

d = {x: x % 2 == 0 for x in range(1, 11)}
print(d)
# 输出:{1: False, 2: True, ...}

注意:集合字面量可以直接用 {} 表示,无需调用 set() 函数,但空集合必须使用 set(),因为 {} 默认表示空字典。

03 计数时使用 Counter

统计元素出现频率是常见任务。collections 模块提供了 类,它是 的子类,专门用于计数。

Counter
dict
from collections import Counter

c = Counter("hello world")
print(c)
# 输出:Counter({'l': 3, ' ': 1, 'o': 2, ...})

# 获取最常见的元素
print(c.most_common(2))
# 输出:[('l', 3), ('o', 2)]

04 漂亮的打印 JSON

JSON 序列化后通常是一行长字符串,难以阅读。使用 indent 参数可以格式化输出,便于调试或日志记录。

import json

data = {
    "status": "OK",
    "count": 2,
    "results": [
        {"age": 27, "name": "Oz", "lactose_intolerant": True},
        {"age": 29, "name": "Joe", "lactose_intolerant": False}
    ]
}

# 无缩进
print(json.dumps(data))

# 有缩进
print(json.dumps(data, indent=2))

此外,pprint 模块也可以用于美化其他对象的打印输出。

05 解决 FizzBuzz 问题

FizzBuzz 是经典的编程练习。利用 Python 的字符串切片和布尔逻辑,可以用极简代码实现。

for x in range(1, 101):
    print("fizz"[x % 3 * len("fizz")::] + "buzz"[x % 5 * len("buzz")::] or x)

解析:

  • 如果 x % 3 == 0,则 x % 3 * len("fizz") 为 0,切片 "fizz"[0::] 返回完整字符串。
  • 如果 x % 3 != 0,索引大于长度,切片返回空字符串。
  • 两个结果拼接后,若为空则执行 or x 输出数字。

06 三元运算符(条件表达式)

Python 允许将 if-else 语句写在单行内,常用于简单的条件赋值。

result = "Hello" if True else "World"
print(result)

07 对象连接与打印

Python 支持多种类型的连接方式,但在 Python 3 中,print 是函数,且不再支持反引号转义。

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]

# 列表相加
print(nfc + afc)

# 字符串转换后连接
print(str(1) + " world")

# 逗号分隔打印(自动添加空格)
print(1, "world")

08 链式比较

Python 支持数学上的链式比较,使代码更接近自然语言描述。

x = 2
if 1 < x < 3:
    print(x)

等价于 if (1 < x) and (x < 3):,但更简洁且不易出错。

09 同时迭代两个列表

使用 zip() 函数可以同时遍历多个可迭代对象,常用于并行处理数据。

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]

for team_a, team_b in zip(nfc, afc):
    print(f"{team_a} vs. {team_b}")

10 带索引的列表迭代

enumerate() 函数可以在遍历时同时获取索引和元素。

teams = ["Packers", "49ers", "Ravens", "Patriots"]
for index, team in enumerate(teams):
    print(index, team)

11 列表推导式优化

使用列表推导式替代传统的循环追加,代码更紧凑。

numbers = [1, 2, 3, 4, 5, 6]
# 传统写法
even = []
for number in numbers:
    if number % 2 == 0:
        even.append(number)

# 推导式写法
even = [number for number in numbers if number % 2 == 0]

12 字典推导

类似列表推导,字典推导可用于构建键值对映射。

teams = ["Packers", "49ers", "Ravens", "Patriots"]
print({key: value for value, key in enumerate(teams)})

13 初始化列表

使用乘法操作符可以快速初始化包含相同元素的列表。

items = [0] * 3
print(items)
# 输出:[0, 0, 0]

注意:对于可变对象(如列表),直接复制引用可能导致意外修改,建议深拷贝。

14 列表转换为字符串

join() 方法是连接字符串序列的高效方式,优于循环拼接。

teams = ["Packers", "49ers", "Ravens", "Patriots"]
print(", ".join(teams))
# 输出:Packers, 49ers, Ravens, Patriots

15 安全获取字典元素

使用 get() 方法可以避免 KeyError 异常,并提供默认值。

data = {"user": 1, "name": "Max", "three": 4}

# 推荐方式
is_admin = data.get("admin", False)

16 列表切片与子集

切片操作灵活,可提取前缀、后缀、步长序列等。

x = [1, 2, 3, 4, 5, 6]
print(x[:3])      # 前 3 个
print(x[1:5])     # 中间 4 个
print(x[3:])      # 最后 3 个
print(x[::2])     # 奇数项(步长为 2)
print(x[1::2])    # 偶数项

17 迭代工具 itertools

itertools 模块提供高效的迭代器工具,如生成组合。

from itertools import combinations

teams = ["Packers", "49ers", "Ravens", "Patriots"]
for game in combinations(teams, 2):
    print(game)

18 关于布尔值的注意事项

在 Python 中,True 和 False 是内置常量,虽然技术上可以重新赋值,但这会破坏语言语义,强烈不建议这样做。

# 不推荐:修改内置常量
# False = True
# if False:
#     print("Hello")

保持代码的可读性和规范性是专业开发者的基本素养。

总结

以上技巧涵盖了 Python 基础语法的高级用法。掌握这些特性不仅能减少代码行数,还能提高程序运行效率。建议在实际项目中结合具体场景灵活运用,并始终遵循 PEP 8 编码规范。

目录

  1. Python 入门高效编程技巧指南
  2. 01 交换变量
  3. 02 字典推导与集合推导
  4. 集合推导
  5. 输出:{2, 4, 8}(顺序可能不同)
  6. 字典推导
  7. 输出:{1: False, 2: True, ...}
  8. 03 计数时使用 Counter
  9. 输出:Counter({'l': 3, ' ': 1, 'o': 2, ...})
  10. 获取最常见的元素
  11. 输出:[('l', 3), ('o', 2)]
  12. 04 漂亮的打印 JSON
  13. 无缩进
  14. 有缩进
  15. 05 解决 FizzBuzz 问题
  16. 06 三元运算符(条件表达式)
  17. 07 对象连接与打印
  18. 列表相加
  19. 字符串转换后连接
  20. 逗号分隔打印(自动添加空格)
  21. 08 链式比较
  22. 09 同时迭代两个列表
  23. 10 带索引的列表迭代
  24. 11 列表推导式优化
  25. 传统写法
  26. 推导式写法
  27. 12 字典推导
  28. 13 初始化列表
  29. 输出:[0, 0, 0]
  30. 14 列表转换为字符串
  31. 输出:Packers, 49ers, Ravens, Patriots
  32. 15 安全获取字典元素
  33. 推荐方式
  34. 16 列表切片与子集
  35. 17 迭代工具 itertools
  36. 18 关于布尔值的注意事项
  37. 不推荐:修改内置常量
  38. False = True
  39. if False:
  40. print("Hello")
  41. 总结

更多推荐文章

查看全部
  • Python 通达信数据获取技术解析与应用
  • C++ 核心基础特性详解:重载、引用、内联、auto 与 nullptr
  • Llama 开源家族演进:从 Llama-1 到 Llama-3 技术梳理
  • PaperRed:AI 驱动的论文查重与辅助写作工具概览
  • ubuntu 24.04 安装 Nvidia 显卡驱动 + CUDA + cuDNN,配置 AI 深度学习训练环境
  • 链表数据结构详解:结构、操作与应用
  • RAG 技术详解:现状、挑战与优化策略
  • HTTP 协议深度解析(三):完整 HTTP 服务器实现
  • 基于 Coze 平台的企业级 AI 客服机器人搭建实战
  • 大模型转行指南:核心知识、技能要求与学习路径
  • 树莓派 5 结合 Whisper 与 EdgeTTS 构建全离线语音助手
  • Python 基础语法入门(一):常量、变量与运算符
  • Linux 基础 IO 系列:文件本质与“一切皆文件”哲学
  • Python 零基础入门学习指南与跨行经验分享
  • 大模型学习方法:从构建小应用入手而非沉迷理论
  • Code2Prompt 工具使用指南:将本地项目打包为 AI 提示词
  • Java 图像处理实战:马赛克与灰度算法及底层原理解析
  • Vivado IP 核实现 LVDS 高速通信:从零构建方案
  • 八种常见排序算法原理与实现
  • Android 通过代码模拟媒体按键控制音乐播放器

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online