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

Python 入门:30 个常用技巧与最佳实践

Python 编程包含变量交换、列表切片、字典操作等 30 个实用技巧。涵盖多变量赋值、负索引、生成器构造、元组命名及字典合并等功能。通过优化代码结构和使用内置函数,可提升开发效率与代码可读性,适合初学者快速掌握语言特性。

SqlMaster发布于 2025/2/7更新于 2026/10/20105 浏览
Python 入门:30 个常用技巧与最佳实践

import collections import itertools

一、交换两个变量的值

在 Python 里面交换变量的值,不需要像 C 语言一样用异或操作,并且只需要一行就搞定了。

a, b = 1, 2
a, b = b, a

二、多个变量赋值

在 Python 对多个变量进行赋值是非常方便的,可以在一行内进行各种形式的赋值。

a, b, c = 1, 2, 3
a, b, c = [1, 2, 3]
a, b, c = (2 * i + 1 for i in range(3))
a, (b, c), d = [1, (2, 3), 4]

三、扩展赋值

Python 的技巧非常令人愉悦,例如这种赋值方式。

a, *b, c = [1, 2, 3, 4, 5]

四、列表中负的下标索引方式

这种方式给编程提供了诸多便利。Python 将列表的首尾连接起来了。

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# a[-1] 的值为 10,a[-2] 的值为 9

五、列表切片

列表切片功能是一项非常实用的功能。

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(a[2:8])  # 输出 [2, 3, 4, 5, 6, 7]

六、使用负的下标索引来切片

列表可以使用负的索引来进行切片。

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(a[-4:-2])  # 输出 [7, 8]

七、列表切片时使用步长

使用步长可以让 Python 对列表进行切片时跳过其中指定步长的值。

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(a[::2])      # 输出 [0, 2, 4, 6, 8, 10]
print(a[2:8:2])    # 输出 [2, 4, 6]

八、列表切片时使用负的步长

在对列表切片时,可以使用负的步长。

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(a[::-1])     # 输出 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
print(a[::-2])     # 输出 [10, 8, 6, 4, 2, 0]

九、对列表切片进行修改

列表切片赋值可以很方便地去修改列表中的某一部分值。

a = [1, 2, 3, 4, 5]
a[2:4] = [0, 0]        # a = [1, 2, 0, 0, 5]
a[1:1] = [8, 9]        # a = [1, 8, 9, 2, 3, 4, 5]
a[1:-1] = []           # a = [1, 5]

十、对切片进行命名

类似于定义宏,我们可以取个名字方便实际使用。

a = [0, 1, 2, 3, 4, 5]
LASTTHREE = slice(-3, None, None)
print(a[LASTTHREE])    # 输出 [3, 4, 5]

十一、枚举列表中的索引和值

a = ['Hello', 'world', '!']
for i, x in enumerate(a):
    print('{}: {}'.format(i, x))

十二、枚举字典中的 key 和 value

m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
for k, v in m.items():
    print('{}: {}'.format(k, v))

十三、拆分和重组列表

a = [1, 2, 3]
b = ['a', 'b', 'c']
z = zip(a, b)            # [(1, 'a'), (2, 'b'), (3, 'c')]
print(list(zip(*z)))     # [(1, 2, 3), ('a', 'b', 'c')]

十四、对列表进行分组

a = [1, 2, 3, 4, 5, 6]
group_adjacent = lambda a, k: zip(*([iter(a)] * k))
print(group_adjacent(a, 3))  # [(1, 2, 3), (4, 5, 6)]
print(group_adjacent(a, 2))  # [(1, 2), (3, 4), (5, 6)]

十五、交换字典的 key 和 value

m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
print(dict(zip(m.values(), m.keys())))
# 输出 {1: 'a', 2: 'b', 3: 'c', 4: 'd'}

十六、对列表进行降维

a = [[1, 2], [3, 4], [5, 6]]
result = list(itertools.chain.from_iterable(a))
print(result)  # [1, 2, 3, 4, 5, 6]

十七、构造一个生成器

g = (x ** 2 for x in range(10))
print(next(g))  # 0
print(next(g))  # 1
print(next(g))  # 4

十八、构造一个字典

m = {x: x ** 2 for x in range(5)}
print(m)  # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

十九、用字典的方式来交换字典的 key 和 value

m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
print({v: k for k, v in m.items()})
# 输出 {1: 'a', 2: 'b', 3: 'c', 4: 'd'}

二十、为元组进行命名

Point = collections.namedtuple('Point', ['x', 'y'])
p = Point(x=1.0, y=2.0)
print(p.x)  # 1.0
print(p.y)  # 2.0

二十一、给字典排序

# 普通字典在旧版本中无序
m = dict((str(x), x) for x in range(10))

# 使用 OrderedDict 保持顺序
m = collections.OrderedDict((str(x), x) for x in range(10))
print(list(m.keys()))  # ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']

二十二、合并两个字典

x = {'a': 1, 'b': 2}
y = {'b': 3, 'c': 4}
z = {**x, **y}
print(z)  # {'c': 4, 'a': 1, 'b': 3}

二十三、使用 lambda 来便捷创建函数

add = lambda x, y: x + y
print(add(5, 3))  # 8

二十四、反转一个字符串

a = "abcdefgh"
print("Reverse is", a[::-1])  # hgfedcba

二十五、矩阵转置

mat = [[1, 2, 3], [4, 5, 6]]
print(list(zip(*mat)))  # [(1, 4), (2, 5), (3, 6)]

二十六、字符串连接

a = ['my', 'life', 'is', 'pure']
print(' '.join(a))  # my life is pure

二十七、字符串重复生成

a = 'python' * 5
print(a)  # pythonpythonpythonpythonpython

二十八、字符串转为数组

a = "my life is brilliant"
result = a.split()
print(result)  # ['my', 'life', 'is', 'brilliant']

二十九、多个条件不等式

n = 10
result = 1 < n < 20
print(result)  # True

三十、找到列表里出现频率最高的值

test = [1, 2, 3, 4, 2, 2, 3, 1, 4, 4, 4]
print(max(set(test), key=test.count))  # 4

目录

  1. 一、交换两个变量的值
  2. 二、多个变量赋值
  3. 三、扩展赋值
  4. 四、列表中负的下标索引方式
  5. a[-1] 的值为 10,a[-2] 的值为 9
  6. 五、列表切片
  7. 六、使用负的下标索引来切片
  8. 七、列表切片时使用步长
  9. 八、列表切片时使用负的步长
  10. 九、对列表切片进行修改
  11. 十、对切片进行命名
  12. 十一、枚举列表中的索引和值
  13. 十二、枚举字典中的 key 和 value
  14. 十三、拆分和重组列表
  15. 十四、对列表进行分组
  16. 十五、交换字典的 key 和 value
  17. 输出 {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
  18. 十六、对列表进行降维
  19. 十七、构造一个生成器
  20. 十八、构造一个字典
  21. 十九、用字典的方式来交换字典的 key 和 value
  22. 输出 {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
  23. 二十、为元组进行命名
  24. 二十一、给字典排序
  25. 普通字典在旧版本中无序
  26. 使用 OrderedDict 保持顺序
  27. 二十二、合并两个字典
  28. 二十三、使用 lambda 来便捷创建函数
  29. 二十四、反转一个字符串
  30. 二十五、矩阵转置
  31. 二十六、字符串连接
  32. 二十七、字符串重复生成
  33. 二十八、字符串转为数组
  34. 二十九、多个条件不等式
  35. 三十、找到列表里出现频率最高的值

更多推荐文章

查看全部
  • 深入理解 Java 中的 byte 类型
  • 深度剖析 Rokid SLAM 算法:从传感器融合到空间重建的技术链路
  • Qt Creator 配置 GitHub Copilot 插件实战指南
  • Fanuc 机器人与 PLC 的 Ethernet/IP 通信
  • llama-cpp-python 安装配置与性能优化指南
  • Spring Boot 4.0 与 Spring Cloud Alibaba 2025 整合指南
  • 本地部署开源大语言模型框架 Ollama 入门指南
  • GitHub 日榜热门项目精选 (2026-02-21)
  • 【Unity-MCP完全指南:从零开始构建AI游戏开发助手】
  • AI Agent 框架选型指南:OpenClaw、LangChain、AutoGPT、CrewAI 深度对比
  • AIGC、Agent 与 MCP 概念解析及关系梳理
  • C++ 继承核心机制详解
  • 论文AIGC飘红?深扒10款降ai率工具,免费降ai率还是交智商税?这篇论文降ai干货请收好!
  • RTX50 系列显卡与 CUDA、PyTorch 及 Python 版本兼容性指南
  • Neo4j 5.26 版本下载安装配置步骤
  • 排序算法实战:经典题目解析与代码实现
  • LAM-YOLO: 无人机小目标检测模型的光照遮挡注意力机制
  • DeepSeek-R1 模型基于 LLaMA-Factory 的可视化微调实战
  • 前端动画库选型指南:CSS、Framer Motion 与 GSAP 实战
  • VLM Unlearning 技术路线论文总结

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如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