Python 等价于 vector::reserve()

2023-11-24

我正在寻找 C++ vector::reserve() 的 Python 等效项。我不知道列表会提前有多大,但我知道它会相当大,并且我希望尽可能避免调整大小,因为列表是在深层内部循环中增长的。

到目前为止,我提出的唯一解决方案与 vector::reserve() 习惯用法相比非常麻烦。该解决方案是使用 [None]*K 预先创建列表,在单独的计数器中跟踪列表的大小,根据需要将项目附加或设置到列表中,然后在完全构建后复制列表的一部分。还有其他选择吗?


为了解决这个问题,我做了一些性能测试:

def foo(n):
  x = []
  for y in xrange(n): x.append(y)

def bar(n):
  x = [None] * n
  for y in xrange(n): x[y] = y

def baz(n):
  # This is obviously silly; we could just do range(n)
  # but this way makes for a fairer test
  x = [y for y in xrange(n)]

>>> timeit.timeit(lambda:foo(1000000), number=10)
1.761765391970215
>>> timeit.timeit(lambda:bar(1000000), number=10)
0.79829286962450396
>>> timeit.timeit(lambda:baz(1000000), number=10)
0.9904259479906159
>>> timeit.timeit(lambda:foo(10000), number=1000)
1.3354106457664443
>>> timeit.timeit(lambda:bar(10000), number=1000)
0.70596751821813086
>>> timeit.timeit(lambda:baz(10000), number=1000)
0.58049759117432131
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 等价于 vector::reserve() 的相关文章

  • 如何使用 sys.path.append 在 Python 中导入文件?

    我的桌面上有两个目录 DIR1 and DIR2其中包含以下文件 DIR1 file1 py DIR2 file2 py myfile txt 这些文件包含以下内容 file1 py import sys sys path append s
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • C++中判断unicode字符是全角还是半角

    我正在编写一个终端 控制台 应用程序 该应用程序应该包装任意 unicode 文本 终端通常使用等宽 固定宽度 字体 因此要换行文本 只需计算字符数并观察单词是否适合一行并采取相应的操作 问题是 Unicode 表中的全角字符在终端中占用了
  • Python 类型安全吗?

    根据维基百科 https en wikipedia org wiki Type system Type safety and memory safety 如果一种语言不允许违反类型系统规则的操作或转换 计算机科学家就认为该语言是 类型安全的
  • 在 Sphinx 中,有没有办法在声明参数的同时记录参数?

    我更喜欢在声明参数的同一行记录每个参数 根据需要 以便应用D R Y http en wikipedia org wiki Don t repeat yourself 如果我有这样的代码 def foo flab nickers a ser
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 将 Word 转换为 PDF - 禁用“保存”对话框

    我有一个用 C 编写的 Word 到 PDF 转换器 除了一件事之外 它工作得很好 有时 在某些 Word 文件上 后台会出现一条消息保存源文件中的更改 gt 是 否 取消 但我没有对源文件进行任何更改 我只想从 Word 文件创建 PDF
  • C++ 对象用 new 创建,用 free() 销毁;这有多糟糕?

    我正在修改一个相对较大的 C 程序 不幸的是 并不总是清楚我之前的人使用的是 C 还是 C 语法 这是在一所大学的电气工程系 我们 EE 总是想用 C 来做所有事情 不幸的是 在这种情况下 人们实际上可以逃脱惩罚 但是 如果有人创建一个对象
  • 使动态创建的链接标签在 Winforms 中可点击

    我正在制作一个程序 允许用户单击由动态链接标签创建的公司名称 在我想知道如何做到这一点之前 我从未在 C 中使用过链接标签 可为特定用户生成的业务数量各不相同 因此每个用户的链接标签数量并不相同 然后我想捕获业务 ID 以进行 Json 调
  • 如何使用 matplotlib 为圆柱体的每个单独面添加颜色

    我正在尝试为圆柱体的每个面着色 但是我不确定如何进行 我尝试了以下方法 for i in range 10 col append for i in range 10 for j in range 20 col i append plt cm
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 我可以使用 lambda 函数或 std::function 对象来代替函数指针吗?

    我有一个需要使用的库 它定义了以下内容 typedef void CallbackFunction const int i 并且有一个注册回调的函数 如下所示 void registerCallback CallbackFunction p
  • python sklearn中的fit方法

    我问自己关于 sklearn 中拟合方法的各种问题 问题1 当我这样做时 from sklearn decomposition import TruncatedSVD model TruncatedSVD svd 1 model fit X
  • 当用户更改 Windows 中的语言键盘布局时如何通知?

    I want to show a message to user when the user changes the language keyboard layout of Windows for example from EN to FR
  • 缓存 Flask-登录 user_loader

    我有这个 login manager user loader def load user id None return User query get id 在我引入 Flask Principal 之前它运行得很好 identity loa

随机推荐

  • 如何调用另一个项目中的活动?

    你好 我是 android 新手 我创建了 2 个项目 现在 我想在单击按钮时从第一个项目调用第二个项目中的活动 第一个项目仅处理登录屏幕 当我单击登录按钮时 我需要调用第二个项目中存在的活动 我在网上搜索但没有找到任何我能正确理解的教程
  • UIStatusBarStyle Light Content 未将电池设置为白色?

    我正在以编程方式将状态栏设置为白色 UIApplication sharedApplication setStatusBarStyle UIStatusBarStyleLightContent 但是电池图标仍然是绿色的 苹果的例子显示应用这
  • 如何在 SystemVerilog 中将变量值传递给宏?

    我认为这个问题很好地概括了我想要的 将变量的值传递给 SystemVerilog 中的宏 例如我想要的 比如说 有 4 个名为 abc X def 的信号 我想将它们全部初始化为 0 所以 没有宏 abc 0 def 4 b0000 abc
  • Option、Either 等上的折叠和 Traversable 上的折叠有什么关系?

    Scalaz 提供了一个名为fold对于各种 ADT 例如Boolean Option Validation Either 该方法基本上采用与给定 ADT 的所有可能情况相对应的函数 换句话说 模式匹配如下所示 x match case C
  • 致命错误 C1001:编译器中发生内部错误。 'f:\dd\vctools\compiler\cxxfe\sl\p1\c\p0io.c'

    在 Visual Studio 2013 中构建 C 解决方案时 出现以下错误 fatal error C1001 An internal error has occurred in the compiler compiler file f
  • 如何单独/单独对齐行内的子可组合项?

    我是jetpack compose的新手 我正在尝试做一件我无法实现的简单事情 我想要做的是在同一行中对齐一个组件 在本例中是一个表面 位于行的开头 另一个组件 列 位于行的末尾 怎么才能得到这个呢 我正在尝试这个 但它不起作用 Row M
  • 如何获取标题? (java,httpclient 4.X)

    当我做 Header h first getAllHeaders 返回的Header数组为空 有任何想法吗 下面是我的代码 HttpClient httpclient new DefaultHttpClient CookieStore co
  • 正则表达式:包含至少 8 位十进制数字

    我需要正则表达式来检查字符串是否包含 8 位或更多十进制数字 它可以包含任何其他内容 并且数字不必是连续的 提前致谢 编辑 用 十进制数字 替换 数字 以匹配接受的答案 d d 8 也许不是最优雅 最有效的方法 但它确实有效 基本上它将匹配
  • 如何在Spring Boot中为RestTemplate设置PropertyNamingStrategy?

    我编写了一个 SpringBoot 应用程序 它使用一个 REST API 并呈现一个 REST API 我的模型 pojo 有驼峰命名的属性 应用程序使用的 json 具有 under score 属性名称 应用程序生成的 json 具有
  • React Native 中的 AutoCompleteTextView 兼容 iOS 和 Android

    我需要在本机反应中实现 AutoCompleteTextView 问题是没有这样的内置组件 所有可用于模仿此功能的模块和库并不完全相似 主要问题是建议没有出现在视图上 如选择框 选择器 即使是这样 它与KeyboardAvoidingVie
  • 尝试使用 jasmine 和 Angular 时出现错误

    当我尝试使用时 httpBackend flush 我收到错误类型错误 browser cookies 不是函数 我找不到有关此类错误的任何信息以及任何解决方案 describe someText function var httpBack
  • jQuery 按钮单击 jqGrid 刷新仅触发一次

    我有以下 jQuery 代码 用于填充 jqGrid 第一次单击按钮时 它可以完美地发布到我的 ASP NET MVC 页面 我的问题是 任何其他点击超过第一个点击按钮时似乎都会运行 jquery 代码 但它永远不会进入 POST 页面 有
  • 为什么 WPF 支持多重绑定,但 silverlight 不支持?

    多重绑定是 WPF 中非常强大的功能 为什么 silverlight 不支持它 他们从来没有抽出时间来增加支持吗 它太大而无法适应 NET 框架 它会出现在 Silverlight 5 中吗 有谁知道答案吗 Thanks 它不受开箱即用的支
  • 在子进程 Popen 和通信后关闭所有文件的正确方法

    我们在运行 python Twisted 应用程序的 Ubuntu Linux 机器上遇到了一些可怕的 打开文件过多 问题 在我们程序的许多地方 我们都使用子进程 Popen 如下所示 Popen ifconfig iface shell
  • 错误:项目上未安装 EntityFramework 包

    我刚刚安装了 SQL Server 2008 将 ASP NET MVC 4 项目配置为部署在本地 IIS 上 并添加了到当时创建的数据库的新连接 在 sql server 2008 中 当我尝试通过启用迁移 实体框架 时启用 迁移 Con
  • 如何在格子中标记面板

    这是一个简单的问题 您肯定已经遇到过 但让我很头疼 我有一个像这样的数据框 set seed 3 mydata lt data frame var rnorm 100 20 1 temp sin sort rep c 1 10 10 sub
  • 评估业务规则引擎的标准[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我们正在购买业务规则引擎
  • Jquery 选择元素 2 的位置进一步 - .next().next() 的另一种方式

    我正在寻找一种方法 如何选择一个 div 元素 该元素不是通过单击功能 选择 的元素的直接下一个元素 div siblings div div text div div div 现在我想选择 id 为 get this one 的一个 在我
  • Git 如何记录(或更可能表示)其 blob 的文件路径和名称,然后识别重命名?

    我正在尝试了解 git 设法 记住 文件名及其路径的方式 因为它只将文件内容存储在 blob 中 解释是在链接在这里Abizem 写的不错吗 这是迄今为止我见过的最好的 后续问题是 git 如何 在哪里 确定我们何时具有相似性 特别是在 移
  • Python 等价于 vector::reserve()

    我正在寻找 C vector reserve 的 Python 等效项 我不知道列表会提前有多大 但我知道它会相当大 并且我希望尽可能避免调整大小 因为列表是在深层内部循环中增长的 到目前为止 我提出的唯一解决方案与 vector rese