TheAlgorithms/Python 是一个综合性的教育仓库,包含了各种用 Python 实现的算法。该仓库作为一个学习资源,包含了超过2,500个算法实现,涵盖了计算机科学基础概念、数学算法、机器学习、密码学以及专业领域。所有实现都包含文档、doctest,且旨在用于教育目的而非生产环境。
本文档介绍了该仓库的高层架构、组织原则和基础设施。有关具体的算法实现,请参阅各个领域章节(排序与搜索、动态规划、机器学习等)。有关贡献指南和标准,请参阅贡献指南。
来源: DIRECTORY.md1-1178 pyproject.toml1-263 .github/workflows/build.yml1-38
该仓库包含26个主要算法领域的实现,以分层目录结构组织。每个领域都包含多个子目录和专门的实现。
| 领域 | 目录 | 关键领域 | 示例文件 |
|---|---|---|---|
| 数据结构 | data_structures/ | 树、堆、图、链表 | binary_tree/avl_tree.py, heap/max_heap.py |
| 排序 | sorts/ | 比较/非比较排序 | quick_sort.py, merge_sort.py |
| 搜索 | searches/ | 线性、二分、图搜索 | binary_search.py, depth_first_search.py |
| 动态规划 | dynamic_programming/ | 优化问题 | knapsack.py, longest_common_subsequence.py |
| 机器学习 | machine_learning/ | 监督/非监督学习 | k_means_clust.py, linear_regression.py |
| 加密 | ciphers/ | 经典/现代密码 | rsa_cipher.py, caesar_cipher.py |
| 图算法 | graphs/ | 路径查找、最小生成树、网络流 | dijkstra.py, minimum_spanning_tree_kruskal.py |
| 数学 | maths/ | 数论、统计 | prime_numbers.py, fibonacci.py |
来源: DIRECTORY.md184-537 DIRECTORY.md572-625
来源: pyproject.toml1-48 uv.lock1-10 requirements.txt1-20
该仓库通过自动化工具强制执行严格的代码质量标准
来源: .pre-commit-config.yaml1-65 .github/workflows/build.yml1-38 .github/workflows/ruff.yml1-17
来源: .github/workflows/build.yml22-35 pyproject.toml163-171
该仓库包含一个专门用于欧拉计划解法的验证系统
来源: .github/workflows/project_euler.yml1-36 pyproject.toml44-47 project_euler/problem_070/sol1.py1-102
该仓库使用 Sphinx 自动化生成 API 文档
来源: pyproject.toml180-263 .github/workflows/sphinx.yml1-51
该仓库维护一个自动生成的目录列表
来源: .github/workflows/build.yml37 DIRECTORY.md1-1178
每个算法实现都遵循一致的模式
物理学领域示例
来源: physics/speeds_of_gas_molecules.py54-79 maths/numerical_analysis/proper_fractions.py4-34
pyproject.toml 通过 Ruff 定义了全面的 Linting 规则
| 规则类别 | 示例 | 目的 |
|---|---|---|
| 代码质量 | B (flake8-bugbear), SIM (flake8-simplify) | 捕获常见错误并简化代码 |
| 风格 | E, W (pycodestyle), I (isort) | 一致的格式化 |
| 类型安全 | FA (flake8-future-annotations) | 现代类型注解实践 |
| 安全 | S (flake8-bandit) | 安全漏洞检测 |
| 性能 | NPY (NumPy-specific rules) | NumPy 最佳实践 |