内置 python 函数的时间/空间复杂度

2023-12-07

split/strip/open(内置 python 函数)的时间/空间复杂度是多少?

有谁知道我可以在哪里查找这些函数的时间/空间复杂度?


确切的答案将取决于输入到函数中的属性。最简单的找出方法可能是检查这些函数的源代码。python 源代码可以在这里找到。

我们先看一下源码split.该代码根据属性运行不同的循环。这是按空格分割的循环。

    while (maxcount-- > 0) {
    while (i < str_len && STRINGLIB_ISSPACE(str[i]))
        i++;
    if (i == str_len) break;
    j = i; i++;
    while (i < str_len && !STRINGLIB_ISSPACE(str[i]))
        i++;

在此代码中,该函数将查看字符串中的每个字符(除非达到最大计数)。对于大小为 n 的字符串,最里面的循环将运行 n 次。时间复杂度为O(n)

条带的来源逐步遍历字符串中的每个字符。

    i = 0;
if (striptype != RIGHTSTRIP) {
    while (i < len) {
        Py_UCS4 ch = PyUnicode_READ(kind, data, i);
        if (!BLOOM(sepmask, ch))
            break;
        if (PyUnicode_FindChar(sepobj, ch, 0, seplen, 1) < 0)
            break;
        i++;
    }
}

j = len;
if (striptype != LEFTSTRIP) {
    j--;
    while (j >= i) {
        Py_UCS4 ch = PyUnicode_READ(kind, data, j);
        if (!BLOOM(sepmask, ch))
            break;
        if (PyUnicode_FindChar(sepobj, ch, 0, seplen, 1) < 0)
            break;
        j--;
    }

    j++;
}

这使得 strip 的时间复杂度为O(n).

open() 的源代码显示没有循环。这是我们所期望的。没有什么可以循环的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内置 python 函数的时间/空间复杂度 的相关文章

  • ipdb 和 pdb++ 之间的区别?

    Python 有一个名为 pdb 的默认调试器 但社区创建了一些替代品 其中两个是ipdb https github com gotcha ipdb and pdb https github com pdbpp pdbpp 它们似乎迎合了相
  • 帮助需要在可选条件下编写正则表达式[关闭]

    我有一个日志文件包含如下内容 log Using data from yyyy mm dd 2011 8 3 0 files queued for scanning Warning E test H ndler pdf File not F
  • Pip install 导致此错误“ cl.exe' failed with exit code 2 ”

    我已经阅读了有关此错误的所有其他问题 但令人沮丧的是 没有一个给出有效的解决方案 如果我跑pip install sentencepiece在命令行中 它给出了以下输出 src sentencepiece sentencepiece wra
  • 将打开关闭的 Google Chrome 浏览器添加到 Selenium linkedin_scraper 代码中

    我正在尝试抓取一些知名人士的 LinkedIn 个人资料 该代码获取一堆 LinkedIn 个人资料 URL 然后使用Selenium and scrape linkedin收集信息并将其作为 json 文件保存到文件夹中 我遇到的问题是
  • Python 使用 M2Crypto 通过 S/MIME 对消息进行签名

    我现在花了几个小时 但找不到我的错误 我想要一个简单的例程来创建 S MIME 签名消息 稍后可以与 smtplib 一起使用 这是我到目前为止所拥有的 usr bin python2 7 coding utf 8 from future
  • 将 matplotlib png 转换为 base64 以在 html 模板中查看

    背景 你好 我正在尝试制作一个简单的网络应用程序 按照教程计算阻尼振动方程 并将结果的 png 返回到 html 页面 然后将其转换为 Base64 字符串 Problem 该应用程序运行正常 只是在计算结果时返回损坏的图像图标 可能是因为
  • 十六进制数的按位异或

    我们如何在 Python 中对十六进制数进行异或 例如 我想要异或 ABCD and 12EF 答案应该是 B922 我使用了下面的代码 但它给出了错误的结果 xor two strings of different lengths def
  • 可移植的非关系数据库

    我想尝试 尝试非关系数据库 最好的解决方案是 便携式 这意味着它不需要安装 理想情况下 只需将目录复制粘贴到某个地方即可使其工作 我不介意第一次使用时是否需要编辑一些配置文件或运行配置工具 可从 python 访问 适用于 Windows
  • 在 keras 中使用自定义张量流操作

    我在张量流中有一个脚本 其中包含自定义张量流操作 我想将代码移植到 keras 但我不确定如何在 keras 代码中调用自定义操作 我想在 keras 中使用tensorflow 所以到目前为止我发现的教程描述了与我想要的相反的内容 htt
  • Pandas Pivot_Table :非数字值的行计算百分比

    这是我在数据框 df 中的数据 Document Name Time SPS2315511 A 1 HOUR SPS2315512 B 1 2 HOUR SPS2315513 C 2 3 HOUR SPS2315514 C 1 HOUR S
  • 在函数调用之间保存数据的Pythonic方式是什么?

    对我来说 上下文是我需要在调用修改该值的函数之间保留的单个 int 的信息 我可以使用全局 但我知道这是不鼓励的 现在 我使用了包含 int 的列表形式的默认参数 并利用了可变性 以便在调用之间保留对值的更改 如下所示 def increm
  • 提交表格并上传带有请求的文件

    我正在努力提交特定的表格蟒蛇请求 http www python requests org 我想使用它的网站上的其他表单工作正常 我可以提交登录表单等 这只是我遇到问题的文件上传 显然 提交表单效果很好 因为我从网站收到一条消息 说 请返回
  • 如何从数据框的单元格中获取值?

    我构建了一个条件 从我的数据框中提取一行 d2 df df l ext l ext df item item df wn wn df wd 1 现在我想从特定列中获取一个值 val d2 col name 但结果 我得到一个包含一行和一列
  • 如何在 Python 中仅列出 zip 存档中的文件夹?

    如何仅列出 zip 存档中的文件夹 这将列出存档中的每个文件夹和文件 import zipfile file zipfile ZipFile samples sample zip r for name in file namelist pr
  • x11 - 导入错误:没有名为“kivy.core.window.window_x11”的模块

    目前我正在尝试构建一个我通过 buildozer 用 Python 和 Kivy 编写的应用程序 无论我在做什么 我都会遇到 window x11 的问题 即使我在代码中注释掉所有与 Windows 相关的内容或执行本文中描述的所有操作 这
  • 向量化 numpy bincount

    我有一个 2d numpy 数组 A我要申请np bincount 到矩阵的每一列A生成另一个二维数组B由原始矩阵每列的 bincounts 组成A 我的问题是 np bincount 是一个采用一维数组的函数 它不是像这样的数组方法B A
  • 使用 Flask-SQLAlchemy 进行多对多多数据库连接

    我正在尝试使这个多对多联接与 Flask SQLAlchemy 和两个 MySQL 数据库一起工作 并且它非常接近 只是它为联接表使用了错误的数据库 这是基础知识 我有main db and vendor db 表格设置为main db u
  • 在 scrapy 中将基本 url 与结果 href 结合起来

    下面是我的蜘蛛代码 class Blurb2Spider BaseSpider name blurb2 allowed domains www domain com def start requests self yield self ma
  • Jinja2中获取请求参数

    如何检索请求参数a在 Jinja2 模板中 http foo bar a 1 我这个答案有点晚了 但其他解决方案并没有真正考虑到您对 Flask 的使用 事实上 您将 Flask 与 Jinja2 一起使用 这使得您的情况与其他框架有点不同
  • 在读/写二进制数据结构时访问位域

    我正在为二进制格式编写一个解析器 这种二进制格式涉及不同的表 这些表同样采用二进制格式 通常包含不同的字段大小 其中 50 100 个之间 大多数这些结构都有位域 并且在 C 语言中表示时看起来像这样 struct myHeader uns

随机推荐

  • 在 Mavericks OS X 10.9.2 中使用 Git 时出现 SSLRead() 错误

    因为我通过 Mavericks OS X 10 9 2 的 MBP 中的 Xcode tools 安装了 Git 我无法将现有存储库克隆到我的计算机中 我很确定问题出在我当前的计算机上 因为该存储库在其他 PC 上运行良好 错误是 amor
  • 如何添加外部包并在 Rust 编译器中运行?

    我正在使用 Rust 编译和构建一个示例程序 我选择了rustc代替cargo用于编译 因为它是一个简单的个人测试项目 到目前为止使用rustc用于编译和构建可执行文件工作正常 但是当我尝试添加外部rand包给了我这个错误 1 extern
  • Rails 不适用于新项目。显示错误“类 Cipher 的超类不匹配 (TypeError)”

    我的 Rails 和 ruby 目前已更新 rails v gt 导轨 5 0 1 ruby v gt ruby 2 4 0p0 2016 12 24 修订版 57164 x86 64 linux 创建了一个新的 Rails 应用程序 Ra
  • 从 Woocommerce 中的优惠券使用中排除具有 2 个特定属性术语的变体

    如果客户的购物车中有任何具有以下属性条款的特定产品变体 我需要防止使用优惠券 attribute pa style gt swirly attribute pa style gt circle 我查看了适用于限制特定产品和特定类别的 Woo
  • 特定时间码的 ffmpeg vfilter

    我想向某些视频添加水印 但我只希望水印出现在视频中的某些时间码 例如开始 中间 结束 并且仅出现几秒钟 我已经让 ffmpeg 按照此处的说明进行水印 但我不知道如何在不同的时间码打开 关闭水印 这是我用来添加水印的命令 ffmpeg i
  • 在 Powershell 中读取 Excel 工作表

    下面的脚本读取 Excel 文档的工作表名称 我该如何改进它 以便它可以提取每个工作表中 B 列的所有内容 从第 5 行开始 因此第 1 4 行被忽略 并创建一个对象 例如 如果工作表 1 中的 B 列 称为伦敦 具有以下值 Marleyb
  • Java 垃圾收集如何与循环引用一起使用?

    根据我的理解 如果没有其他东西 指向 某个对象 Java 中的垃圾收集会清理一些对象 我的问题是 如果我们有这样的事情会发生什么 class Node public object value public Node next public
  • 从 Eclipse RCP 应用程序中删除“文件、编辑等”菜单

    我想从我的 RCP 应用程序中删除 文件 编辑 源 重构 等菜单 我可以用吗hideActionSet 或者我应该做什么 这是正确的 在你的应用程序工作台窗口顾问 覆盖发布窗口打开 棘手的一点通常是找出要删除的操作集的名称 但您可以使用旧的
  • 正则表达式空白字符会导致注入吗?

    如果我想验证a的输入
  • EF 5 AddOrUpdate 重复数据

    这是种子方法中的代码 var city new City Name A var nh new List
  • 选择日期后,显示错误的月份[重复]

    这个问题在这里已经有答案了 我正在使用日期选择器 但每当我选择任何日期时 它都会显示 1 个月 例如 如果我选择 12 12 2016 它将显示在文本框中 12 11 2016 如果我选择 3 1 2017 它将显示 3 0 2017 这是
  • 我无法在任何地方访问我的数组对象,如何快速访问它们?

    如何在另一个函数中访问我的数组对象 即来自 arr 和电子邮件的数组对象 到目前为止 当我调用 auth auth 函数时 我只能访问 else 语句内的数组对象 我想知道如何才能做到这一点 let store CNContactStore
  • HttpListener - 如何将 WebException HTTP 304“未修改”错误发送回浏览器?

    如果我使用 HttpListener 如何将 WebException 304 错误模拟回浏览器 也就是说 我收到了对 HttpListener 的请求 然后获得了 HttpListenerContext 那么从现在开始 我将如何模仿 安排
  • 与 JPA 的数据库独立字符串比较

    我正在使用 JPA Hibernate 作为提供者 和底层 MySQL 数据库 我有一张表 其中包含德国所有街道的名称 每个街道名称都有一个唯一的编号 对于一项任务 我必须找出姓名的编号 为此 我编写了一个 JPQL 查询 如下所示 SEL
  • 使用 R 绘图在 R 中绘制点图

    生成具有这样两个因素的点图的最佳方法是什么 最好使用标准 R 图 而不是 ggplot 并从 2x2 数据框生成 水平线应该是手段 我尝试过克利夫兰点图 但无法弄清楚如何获取两个数据系列并让点抖动 下面的代码应该可以解决这个问题 set s
  • 为 Firebase 云消息传递 PHP 生成 OAUTH 令牌

    我有一个 PHP 页面 我用它来向我开发的移动应用程序的用户发送通知 该页面直到上个月都工作正常 然后它给了我这个错误 multicast id 5174063503598899354 成功 0 失败 1 canonical ids 0 结
  • Kivy:已弃用功能的替代方案

    我正在尝试适应这个code但我仍然是第一步 因为我不理解大多数称为 like like 的功能可选数据项 Adapter 列表适配器 or 可选视图 当我在 kivy 网站上查找它们时 我发现它们被列为已弃用 我在 Kivy 网站上找不到这
  • 如何为每个商店对象提供自己的库存数组列表?

    发现这个很难 基本上我有三个类 Store 类 Stock 类 然后是 GUI 类 创建商店时 我希望它有自己的 arrayList 以便我可以向其中添加多个库存对象 通过 GUI 完成 我尝试只包含所需的基本代码 已删除 getter 方
  • 如何对元组数组进行排序?

    如何实现 或创建 元组列表的数组排序 以下内容是从我的代码中收集到的 本质上我创建了一个元组数组 并通过 for 循环填充它 之后我尝试对其进行排序 var myStringArray String Int nil myStringArra
  • 内置 python 函数的时间/空间复杂度

    split strip open 内置 python 函数 的时间 空间复杂度是多少 有谁知道我可以在哪里查找这些函数的时间 空间复杂度 确切的答案将取决于输入到函数中的属性 最简单的找出方法可能是检查这些函数的源代码 python 源代码