From b7c110e5ecebfe355d39636835105ca01575a506 Mon Sep 17 00:00:00 2001 From: krahets Date: Mon, 23 Oct 2023 06:02:34 +0800 Subject: [PATCH] Add build check with py_compile --- codes/python/build.py | 17 +++++++++++++++++ docs/chapter_array_and_linkedlist/summary.md | 2 +- docs/chapter_graph/graph_operations.md | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 codes/python/build.py diff --git a/codes/python/build.py b/codes/python/build.py new file mode 100644 index 000000000..6c721f389 --- /dev/null +++ b/codes/python/build.py @@ -0,0 +1,17 @@ +import glob +import py_compile as pyc + +src_paths = sorted(glob.glob("codes/python/**/*.py")) +num_src = len(src_paths) +num_src_error = 0 + +for src_path in src_paths: + try: + pyc.compile(src_path, doraise=True) + except pyc.PyCompileError as e: + num_src_error += 1 + print(e) + +print(f"===== Build Summary =====") +print(f"Total: {num_src}") +print(f"Error: {num_src - num_src_error}") diff --git a/docs/chapter_array_and_linkedlist/summary.md b/docs/chapter_array_and_linkedlist/summary.md index b6ca3a67b..f9275bc24 100644 --- a/docs/chapter_array_and_linkedlist/summary.md +++ b/docs/chapter_array_and_linkedlist/summary.md @@ -70,7 +70,7 @@ 另一方面,必要使用链表的情况主要是二叉树和图。栈和队列往往会使用编程语言提供的 `stack` 和 `queue` ,而非链表。 !!! question "初始化列表 `res = [0] * self.size()` 操作,会导致 `res` 的每个元素引用相同的地址吗?" - + 不会。但二维数组会有这个问题,例如初始化二维列表 `res = [[0] * self.size()]` ,则多次引用了同一个列表 `[0]` 。 !!! question "在删除节点中,需要断开该节点与其后继节点之间的引用指向吗?" diff --git a/docs/chapter_graph/graph_operations.md b/docs/chapter_graph/graph_operations.md index 602290e96..a149182f6 100644 --- a/docs/chapter_graph/graph_operations.md +++ b/docs/chapter_graph/graph_operations.md @@ -62,7 +62,7 @@ - 为了方便添加与删除顶点,以及简化代码,我们使用列表(动态数组)来代替链表。 - 使用哈希表来存储邻接表,`key` 为顶点实例,`value` 为该顶点的邻接顶点列表(链表)。 -另外,我们在邻接表中使用 `Vertex` 类来表示顶点。这是因为如果与邻接矩阵一样用列表索引来区分不同顶点。那么假设想要删除索引为 $i$ 的顶点,则需要遍历整个邻接表,将所有大于 $i$ 的索引全部减 $1$ ,效率很低。而如果每个顶点都是唯一的 `Vertex` 实例,删除某一顶点之后就无须改动其他顶点了。 +另外,我们在邻接表中使用 `Vertex` 类来表示顶点,这样做的原因是:如果与邻接矩阵一样,用列表索引来区分不同顶点,那么假设要删除索引为 $i$ 的顶点,则需遍历整个邻接表,将所有大于 $i$ 的索引全部减 $1$ ,效率很低。而如果每个顶点都是唯一的 `Vertex` 实例,删除某一顶点之后就无须改动其他顶点了。 ```src [file]{graph_adjacency_list}-[class]{graph_adj_list}-[func]{}