 Hello 算法 1.0.0b4 Python版时间复杂度的推算方法更简便。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因此在 时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将“计算操作 的运行时间的统计”简化为“计算操作的数量的统计”,这样的简化方法大大降低了估算难度。 时间复杂度也存在一定的局限性。例如,尽管算法 A 和 C 的时间复杂度相同,但实际运行时间差别很大。同 样,尽管算法 B 的时间复杂度比 C 高,但在输入数据大小 我们很难仅凭时间复杂度判断算法效率高低。当然,尽管存在上述问题,复杂度分析仍然是评判算法效率最 有效且常用的方法。 2.2.3. 函数渐近上界 设算法的计算操作数量是一个关于输入数据大小 ? 的函数,记为 ?(?) ,则以下算法的操作数量为 ?(?) = 3 + 2? def algorithm(n: int): a = 1 # +1 a = a + 1 # +1 a = a * 2 # 我们将线性阶的时间复杂度记为 ?(?) ,这个数学符号称为「大 ? 记号 Big‑? Notation」,表示函数 ?(?) 的「渐近上界 Asymptotic Upper Bound」。 推算时间复杂度本质上是计算“操作数量函数 ?(?)”的渐近上界。接下来,我们来看函数渐近上界的数学 定义。 2. 复杂度 hello‑algo.com 17 � 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的0 码力 | 329 页 | 27.34 MB | 1 年前3 Hello 算法 1.0.0b4 Python版时间复杂度的推算方法更简便。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因此在 时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将“计算操作 的运行时间的统计”简化为“计算操作的数量的统计”,这样的简化方法大大降低了估算难度。 时间复杂度也存在一定的局限性。例如,尽管算法 A 和 C 的时间复杂度相同,但实际运行时间差别很大。同 样,尽管算法 B 的时间复杂度比 C 高,但在输入数据大小 我们很难仅凭时间复杂度判断算法效率高低。当然,尽管存在上述问题,复杂度分析仍然是评判算法效率最 有效且常用的方法。 2.2.3. 函数渐近上界 设算法的计算操作数量是一个关于输入数据大小 ? 的函数,记为 ?(?) ,则以下算法的操作数量为 ?(?) = 3 + 2? def algorithm(n: int): a = 1 # +1 a = a + 1 # +1 a = a * 2 # 我们将线性阶的时间复杂度记为 ?(?) ,这个数学符号称为「大 ? 记号 Big‑? Notation」,表示函数 ?(?) 的「渐近上界 Asymptotic Upper Bound」。 推算时间复杂度本质上是计算“操作数量函数 ?(?)”的渐近上界。接下来,我们来看函数渐近上界的数学 定义。 2. 复杂度 hello‑algo.com 17 � 函数渐近上界 若存在正实数 ? 和实数 ?0 ,使得对于所有的0 码力 | 329 页 | 27.34 MB | 1 年前3
 Hello 算法 1.1.0 Python版res += i return res 图 2‑1 是该求和函数的流程框图。 第 2 章 复杂度分析 hello‑algo.com 20 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 {j}), " return res 图 2‑2 是该嵌套循环的流程框图。 第 2 章 复杂度分析 hello‑algo.com 22 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”“四次方 关系”,以此类推。 2 时间复杂度的推算方法更简便。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因 此在时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将 “计算操作运行时间统计”简化为“计算操作数量统计”,这样一来估算难度就大大降低了。 ‧ 时间复杂度也存在一定的局限性。例如,尽管算法 A 和 C 的时间复杂度相同,但实际运行时间差别很 大。同样,尽管算法 B 的时间复杂度比 C 高,但在输入数据大小0 码力 | 364 页 | 18.42 MB | 1 年前3 Hello 算法 1.1.0 Python版res += i return res 图 2‑1 是该求和函数的流程框图。 第 2 章 复杂度分析 hello‑algo.com 20 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 {j}), " return res 图 2‑2 是该嵌套循环的流程框图。 第 2 章 复杂度分析 hello‑algo.com 22 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”“四次方 关系”,以此类推。 2 时间复杂度的推算方法更简便。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因 此在时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将 “计算操作运行时间统计”简化为“计算操作数量统计”,这样一来估算难度就大大降低了。 ‧ 时间复杂度也存在一定的局限性。例如,尽管算法 A 和 C 的时间复杂度相同,但实际运行时间差别很 大。同样,尽管算法 B 的时间复杂度比 C 高,但在输入数据大小0 码力 | 364 页 | 18.42 MB | 1 年前3
 Hello 算法 1.0.0 Python版res += i return res 图 2‑1 是该求和函数的流程框图。 第 2 章 复杂度分析 hello‑algo.com 20 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 {j}), " return res 图 2‑2 是该嵌套循环的流程框图。 第 2 章 复杂度分析 hello‑algo.com 22 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”“四次方 关系”,以此类推。 2 时间复杂度的推算方法更简便。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因 此在时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将 “计算操作运行时间统计”简化为“计算操作数量统计”,这样一来估算难度就大大降低了。 ‧ 时间复杂度也存在一定的局限性。例如,尽管算法 A 和 C 的时间复杂度相同,但实际运行时间差别很 大。同样,尽管算法 B 的时间复杂度比 C 高,但在输入数据大小0 码力 | 362 页 | 17.54 MB | 1 年前3 Hello 算法 1.0.0 Python版res += i return res 图 2‑1 是该求和函数的流程框图。 第 2 章 复杂度分析 hello‑algo.com 20 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 {j}), " return res 图 2‑2 是该嵌套循环的流程框图。 第 2 章 复杂度分析 hello‑algo.com 22 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”“四次方 关系”,以此类推。 2 时间复杂度的推算方法更简便。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因 此在时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将 “计算操作运行时间统计”简化为“计算操作数量统计”,这样一来估算难度就大大降低了。 ‧ 时间复杂度也存在一定的局限性。例如,尽管算法 A 和 C 的时间复杂度相同,但实际运行时间差别很 大。同样,尽管算法 B 的时间复杂度比 C 高,但在输入数据大小0 码力 | 362 页 | 17.54 MB | 1 年前3
 Hello 算法 1.0.0b5 Python版res += i return res 图 2‑1 展示了该求和函数的流程框图。 第 2 章 复杂度分析 hello‑algo.com 19 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 {j}), " return res 图 2‑2 给出了该嵌套循环的流程框图。 第 2 章 复杂度分析 hello‑algo.com 21 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”、“四次方 关系”、以此类推。 时间复杂度的推算方法更简便。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因 此在时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将 “计算操作的运行时间的统计”简化为“计算操作的数量的统计”,这样以来估算难度就大大降低了。 ‧ 时间复杂度也存在一定的局限性。例如,尽管算法 A 和 C 的时间复杂度相同,但实际运行时间差别很 大。同样,尽管算法 B 的时间复杂度比 C 高,但在输入数据大小0 码力 | 361 页 | 30.64 MB | 1 年前3 Hello 算法 1.0.0b5 Python版res += i return res 图 2‑1 展示了该求和函数的流程框图。 第 2 章 复杂度分析 hello‑algo.com 19 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 {j}), " return res 图 2‑2 给出了该嵌套循环的流程框图。 第 2 章 复杂度分析 hello‑algo.com 21 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”、“四次方 关系”、以此类推。 时间复杂度的推算方法更简便。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因 此在时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将 “计算操作的运行时间的统计”简化为“计算操作的数量的统计”,这样以来估算难度就大大降低了。 ‧ 时间复杂度也存在一定的局限性。例如,尽管算法 A 和 C 的时间复杂度相同,但实际运行时间差别很 大。同样,尽管算法 B 的时间复杂度比 C 高,但在输入数据大小0 码力 | 361 页 | 30.64 MB | 1 年前3
 Hello 算法 1.2.0 简体中文 Python 版res += i return res 第 2 章 复杂度分析 www.hello‑algo.com 20 图 2‑1 是该求和函数的流程框图。 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 " return res 图 2‑2 是该嵌套循环的流程框图。 第 2 章 复杂度分析 www.hello‑algo.com 22 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”“四次方 关系”,以此类推。 2 时间复杂度的推算方法更简便。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因 此在时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将 “计算操作运行时间统计”简化为“计算操作数量统计”,这样一来估算难度就大大降低了。 ‧ 时间复杂度也存在一定的局限性。例如,尽管算法 A 和 C 的时间复杂度相同,但实际运行时间差别很 大。同样,尽管算法 B 的时间复杂度比 C 高,但在输入数据大小0 码力 | 364 页 | 18.43 MB | 10 月前3 Hello 算法 1.2.0 简体中文 Python 版res += i return res 第 2 章 复杂度分析 www.hello‑algo.com 20 图 2‑1 是该求和函数的流程框图。 图 2‑1 求和函数的流程框图 此求和函数的操作数量与输入数据大小 ? 成正比,或者说成“线性关系”。实际上,时间复杂度描述的就是 这个“线性关系”。相关内容将会在下一节中详细介绍。 2. while 循环 与 for 循环类似,while 循环也是一种实现迭代的方法。在 " return res 图 2‑2 是该嵌套循环的流程框图。 第 2 章 复杂度分析 www.hello‑algo.com 22 图 2‑2 嵌套循环的流程框图 在这种情况下,函数的操作数量与 ?2 成正比,或者说算法运行时间和输入数据大小 ? 成“平方关系”。 我们可以继续添加嵌套循环,每一次嵌套都是一次“升维”,将会使时间复杂度提高至“立方关系”“四次方 关系”,以此类推。 2 时间复杂度的推算方法更简便。显然,运行平台和计算操作类型都与算法运行时间的增长趋势无关。因 此在时间复杂度分析中,我们可以简单地将所有计算操作的执行时间视为相同的“单位时间”,从而将 “计算操作运行时间统计”简化为“计算操作数量统计”,这样一来估算难度就大大降低了。 ‧ 时间复杂度也存在一定的局限性。例如,尽管算法 A 和 C 的时间复杂度相同,但实际运行时间差别很 大。同样,尽管算法 B 的时间复杂度比 C 高,但在输入数据大小0 码力 | 364 页 | 18.43 MB | 10 月前3
 PyConChina2022-上海-Python Profiling原理深入探索与实践-羿莉帮助用户发现和比较得出需要优化的部分 • 给出了每个函数调用的时间,支持递归 • 运行结果可以基于pstats导出,也可基于 snakeviz进行可视化 • Cprofile 缺点 • 确定性分析,overhead过高 • 统计信息太多,更多的是noise • 更适合即时 profiling,而非在生产环境中 持续 profiling • 只到function 粒度,函数内部未知 Pyinstrument0 码力 | 28 页 | 12.73 MB | 1 年前3 PyConChina2022-上海-Python Profiling原理深入探索与实践-羿莉帮助用户发现和比较得出需要优化的部分 • 给出了每个函数调用的时间,支持递归 • 运行结果可以基于pstats导出,也可基于 snakeviz进行可视化 • Cprofile 缺点 • 确定性分析,overhead过高 • 统计信息太多,更多的是noise • 更适合即时 profiling,而非在生产环境中 持续 profiling • 只到function 粒度,函数内部未知 Pyinstrument0 码力 | 28 页 | 12.73 MB | 1 年前3
 Python 标准库参考指南 3.7.13 7.13 stop stop 形参的值 step step 形参的值 (如果该形参未提供则为 1) range 类型相比常规list 或tuple 的优势在于一个range 对象总是占用固定数量的(较小)内存,不论其 所表示的范围有多大(因为它只保存了 start, stop 和 step 值,并会根据需要计算具体单项或子范围的 值)。 range 对象实现了collections.abc array 可能有更 大的元素。 len(view) 与tolist 的长度相等。如果 view.ndim = 0,则其长度为 1。如果 view.ndim = 1,则其长度等于 view 中元素的数量。对于更高的维度,其长度等于表示 view 的嵌套列表的长度。 itemsize 属性可向你给出单个元素所占的字节数。 memoryview 支持通过切片和索引访问其元素。一维切片的结果将是一个子视图: 对象构成的集合,所有的内层集合必须为frozenset 对象。如果未指定 iterable,则将返回一个新的空 集合。 set 和frozenset 的实例提供以下操作: len(s) 返回集合 s 中的元素数量(即 s 的基数)。 x in s 检测 x 是否为 s 中的成员。 4.9. 集合类型 --- set, frozenset 69 The Python Library Reference0 码力 | 1961 页 | 9.14 MB | 9 月前3 Python 标准库参考指南 3.7.13 7.13 stop stop 形参的值 step step 形参的值 (如果该形参未提供则为 1) range 类型相比常规list 或tuple 的优势在于一个range 对象总是占用固定数量的(较小)内存,不论其 所表示的范围有多大(因为它只保存了 start, stop 和 step 值,并会根据需要计算具体单项或子范围的 值)。 range 对象实现了collections.abc array 可能有更 大的元素。 len(view) 与tolist 的长度相等。如果 view.ndim = 0,则其长度为 1。如果 view.ndim = 1,则其长度等于 view 中元素的数量。对于更高的维度,其长度等于表示 view 的嵌套列表的长度。 itemsize 属性可向你给出单个元素所占的字节数。 memoryview 支持通过切片和索引访问其元素。一维切片的结果将是一个子视图: 对象构成的集合,所有的内层集合必须为frozenset 对象。如果未指定 iterable,则将返回一个新的空 集合。 set 和frozenset 的实例提供以下操作: len(s) 返回集合 s 中的元素数量(即 s 的基数)。 x in s 检测 x 是否为 s 中的成员。 4.9. 集合类型 --- set, frozenset 69 The Python Library Reference0 码力 | 1961 页 | 9.14 MB | 9 月前3
 Python 标准库参考指南 3.7.13 (如果该形参未提供则为 0) stop stop 形参的值 step step 形参的值 (如果该形参未提供则为 1) range 类型相比常规list 或tuple 的优势在于一个range 对象总是占用固定数量的(较小)内存,不 论其所表示的范围有多大(因为它只保存了 start, stop 和 step 值,并会根据需要计算具体单项或子 范围的值)。 range 对象实现了collections.abc array 可能 有更大的元素。 len(view) 与tolist 的长度相等。如果 view.ndim = 0,则其长度为 1。如果 view.ndim = 1,则其长度等于 view 中元素的数量。对于更高的维度,其长度等于表示 view 的嵌套列表的长度。 itemsize 属性可向你给出单个元素所占的字节数。 memoryview 支持通过切片和索引访问其元素。一维切片的结果将是一个子视图: 合对象构成的集合,所有的内层集合必须为frozenset 对象。如果未指定 iterable,则将返回一个 新的空集合。 set 和frozenset 的实例提供以下操作: len(s) 返回集合 s 中的元素数量(即 s 的基数)。 x in s 检测 x 是否为 s 中的成员。 x not in s 检测 x 是否非 s 中的成员。 isdisjoint(other) 如果集合中没有与 other0 码力 | 1846 页 | 9.09 MB | 9 月前3 Python 标准库参考指南 3.7.13 (如果该形参未提供则为 0) stop stop 形参的值 step step 形参的值 (如果该形参未提供则为 1) range 类型相比常规list 或tuple 的优势在于一个range 对象总是占用固定数量的(较小)内存,不 论其所表示的范围有多大(因为它只保存了 start, stop 和 step 值,并会根据需要计算具体单项或子 范围的值)。 range 对象实现了collections.abc array 可能 有更大的元素。 len(view) 与tolist 的长度相等。如果 view.ndim = 0,则其长度为 1。如果 view.ndim = 1,则其长度等于 view 中元素的数量。对于更高的维度,其长度等于表示 view 的嵌套列表的长度。 itemsize 属性可向你给出单个元素所占的字节数。 memoryview 支持通过切片和索引访问其元素。一维切片的结果将是一个子视图: 合对象构成的集合,所有的内层集合必须为frozenset 对象。如果未指定 iterable,则将返回一个 新的空集合。 set 和frozenset 的实例提供以下操作: len(s) 返回集合 s 中的元素数量(即 s 的基数)。 x in s 检测 x 是否为 s 中的成员。 x not in s 检测 x 是否非 s 中的成员。 isdisjoint(other) 如果集合中没有与 other0 码力 | 1846 页 | 9.09 MB | 9 月前3
 Python 标准库参考指南 3.8.20 (如果该形参未提供则为 0) stop stop 形参的值 step step 形参的值 (如果该形参未提供则为 1) range 类型相比常规list 或tuple 的优势在于一个range 对象总是占用固定数量的(较小)内存,不论其 所表示的范围有多大(因为它只保存了 start, stop 和 step 值,并会根据需要计算具体单项或子范围的 值)。 range 对象实现了collections.abc array 可能有更 大的元素。 len(view) 与tolist 的长度相等。如果 view.ndim = 0,则其长度为 1。如果 view.ndim = 1,则其长度等于 view 中元素的数量。对于更高的维度,其长度等于表示 view 的嵌套列表的长度。 itemsize 属性可向你给出单个元素所占的字节数。 memoryview 支持通过切片和索引访问其元素。一维切片的结果将是一个子视图: 使用类型构造器: set(), set('foobar'), set(['a', 'b', 'foo']) set 和frozenset 的实例提供以下操作: len(s) 返回集合 s 中的元素数量(即 s 的基数)。 x in s 检测 x 是否为 s 中的成员。 x not in s 检测 x 是否非 s 中的成员。 isdisjoint(other) 如果集合中没有与 other0 码力 | 2052 页 | 9.74 MB | 9 月前3 Python 标准库参考指南 3.8.20 (如果该形参未提供则为 0) stop stop 形参的值 step step 形参的值 (如果该形参未提供则为 1) range 类型相比常规list 或tuple 的优势在于一个range 对象总是占用固定数量的(较小)内存,不论其 所表示的范围有多大(因为它只保存了 start, stop 和 step 值,并会根据需要计算具体单项或子范围的 值)。 range 对象实现了collections.abc array 可能有更 大的元素。 len(view) 与tolist 的长度相等。如果 view.ndim = 0,则其长度为 1。如果 view.ndim = 1,则其长度等于 view 中元素的数量。对于更高的维度,其长度等于表示 view 的嵌套列表的长度。 itemsize 属性可向你给出单个元素所占的字节数。 memoryview 支持通过切片和索引访问其元素。一维切片的结果将是一个子视图: 使用类型构造器: set(), set('foobar'), set(['a', 'b', 'foo']) set 和frozenset 的实例提供以下操作: len(s) 返回集合 s 中的元素数量(即 s 的基数)。 x in s 检测 x 是否为 s 中的成员。 x not in s 检测 x 是否非 s 中的成员。 isdisjoint(other) 如果集合中没有与 other0 码力 | 2052 页 | 9.74 MB | 9 月前3
 Python 标准库参考指南 3.8.20 (如果该形参未提供则为 0) stop stop 形参的值 step step 形参的值 (如果该形参未提供则为 1) range 类型相比常规list 或tuple 的优势在于一个range 对象总是占用固定数量的(较小)内存,不 论其所表示的范围有多大(因为它只保存了 start, stop 和 step 值,并会根据需要计算具体单项或子 范围的值)。 range 对象实现了collections.abc array 可能 有更大的元素。 len(view) 与tolist 的长度相等。如果 view.ndim = 0,则其长度为 1。如果 view.ndim = 1,则其长度等于 view 中元素的数量。对于更高的维度,其长度等于表示 view 的嵌套列表的长度。 itemsize 属性可向你给出单个元素所占的字节数。 memoryview 支持通过切片和索引访问其元素。一维切片的结果将是一个子视图: 使用类型构造器: set(), set('foobar'), set(['a', 'b', 'foo']) set 和frozenset 的实例提供以下操作: len(s) 返回集合 s 中的元素数量(即 s 的基数)。 x in s 检测 x 是否为 s 中的成员。 x not in s 检测 x 是否非 s 中的成员。 isdisjoint(other) 如果集合中没有与 other0 码力 | 1927 页 | 9.69 MB | 9 月前3 Python 标准库参考指南 3.8.20 (如果该形参未提供则为 0) stop stop 形参的值 step step 形参的值 (如果该形参未提供则为 1) range 类型相比常规list 或tuple 的优势在于一个range 对象总是占用固定数量的(较小)内存,不 论其所表示的范围有多大(因为它只保存了 start, stop 和 step 值,并会根据需要计算具体单项或子 范围的值)。 range 对象实现了collections.abc array 可能 有更大的元素。 len(view) 与tolist 的长度相等。如果 view.ndim = 0,则其长度为 1。如果 view.ndim = 1,则其长度等于 view 中元素的数量。对于更高的维度,其长度等于表示 view 的嵌套列表的长度。 itemsize 属性可向你给出单个元素所占的字节数。 memoryview 支持通过切片和索引访问其元素。一维切片的结果将是一个子视图: 使用类型构造器: set(), set('foobar'), set(['a', 'b', 'foo']) set 和frozenset 的实例提供以下操作: len(s) 返回集合 s 中的元素数量(即 s 的基数)。 x in s 检测 x 是否为 s 中的成员。 x not in s 检测 x 是否非 s 中的成员。 isdisjoint(other) 如果集合中没有与 other0 码力 | 1927 页 | 9.69 MB | 9 月前3
共 77 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8














 
 