Python 列表与数组——何时使用?

2023-12-19

如果要创建一维数组,可以将其实现为列表,或者使用标准库中的“array”模块。我一直对一维数组使用列表。

我想改用数组模块的原因或情况是什么?

是为了性能和内存优化,还是我错过了一些明显的东西?


基本上,Python 列表非常灵活,可以保存完全异构的任意数据,并且可以非常有效地附加它们摊余常数时间 http://en.wikipedia.org/wiki/Dynamic_array#Geometric_expansion_and_amortized_cost。如果您需要高效且轻松地缩小和增加清单,那么它们就是您的最佳选择。但他们使用比 C 数组多得多的空间,部分原因是列表中的每个项目都需要构造一个单独的 Python 对象,即使对于可以用简单 C 类型表示的数据(例如float or uint64_t).

The array.array另一方面,type 只是 C 数组的一个薄包装。它只能保存同类数据(也就是说,所有相同类型的数据),因此它只使用sizeof(one object) * length字节内存。大多数情况下,当您需要将 C 数组公开给扩展或系统调用时(例如,ioctl or fctnl).

array.array也是一种合理的表示方式mutablePython 2.x 中的字符串 (array('B', bytes))。然而,Python 2.6+ 和 3.x 提供了可变的byte字符串为bytearray https://docs.python.org/3/library/stdtypes.html#bytearray.

但是,如果你想做math在同构数值数据数组上,那么您最好使用 NumPy,它可以自动矢量化复杂多维数组上的操作。

使长话短说: array.array当您出于某种原因需要同构 C 数据数组时很有用除了做数学之外.

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

Python 列表与数组——何时使用? 的相关文章

随机推荐

  • 使用 wicket 进行单元测试时如何设置自定义会话?

    我正在尝试在仅允许您登录后访问的 wicket 页面上运行一些单元测试 在我的 JUnit 测试中 如果不设置会话 我无法启动页面或呈现它 你如何设置会话 我在查找有关如何执行此操作的任何文档时遇到问题 WicketTester teste
  • random.setstate() 和 random.seed() 之间差异或相似之处的确切性质是什么

    我对使用种子生成随机数有一个非常高的理解 因此 在生成随机数之前设置特定的种子将导致每次调用时生成相同的数字 我假设通过以下方式恢复状态 import random test123 random getstate random setsta
  • 在 WPF MediaElement 中播放 HTTPS 视频 URL 的解决方法

    我有一个 C WPF 应用程序 我需要通过 HTTPS 播放视频流 我说的是 YouTube 视频 通过使用提取的直接 URLYouTube爆炸 https github com Tyrrrz YoutubeExplode 众所周知 WPF
  • 如何在Retrofit 2中使用gson TypeAdapter?

    我有一个工作代码 其中我的改造客户端可以从 api 检索对象列表 国家 地区 问题是 如果我用来检索所有国家 地区 则 api 使用的参数会返回一个 ARRAY 那么当我想要查询单个国家 地区时 它会返回单个 OBJECT 结果显示以下异常
  • SQLite 中空安全相等运算符 <=> 的等价物是什么?

    我需要确定 SQLite 的等价物是什么 运算符 http dev mysql com doc refman 5 0 en comparison operators html operator equal to在 MySQL 中 任何想法
  • 用于协调的 SQL 语句

    给出以下架构 create table TBL1 ID varchar2 100 primary key not null MATCH CRITERIA varchar2 100 create table TBL2 ID varchar2
  • 多处理另一个函数的函数

    我正在对模拟的时间序列进行分析 基本上 它为每个时间步骤执行相同的任务 由于时间步数非常多 并且每个时间步的分析都是独立的 因此我想创建一个可以多处理另一个函数的函数 后者将有参数 并返回结果 使用共享字典和 lib并发 futures 我
  • Storm-Kafka多个spout,如何分担负载?

    我正在尝试在多个喷口之间分担任务 我遇到一种情况 我一次从外部源获取一个元组 消息 并且我想要拥有多个 spout 实例 其背后的主要目的是共享负载并提高性能效率 我可以对一个 Spout 本身执行相同的操作 但我想在多个 Spout 之间
  • 从 64 位的 SysListView32 获取文本

    这是我的代码 public static string ReadListViewItem IntPtr lstview int item const int dwBufferSize 1024 int dwProcessID LV ITEM
  • ngx-datatable 的通用“包装”组件

    一些介绍 我们目前正在开发一个基于 Angular2 的应用程序 该应用程序数据量很大 为了显示这些数据 我们决定给出ngx 数据表 https github com swimlane ngx datatable尝试一下 需要大量组件来显示
  • Android:创建自定义容器视图

    我正在尝试在 android 中创建一个自定义视图 或更好的布局 它用作 2 个子视图的容器 将其视为垂直分隔 2 个容器的条形图 可以上下滑动 我想像 xml 中的布局一样使用它 以便您可以在其中嵌套任何视图 我想到了类似的事情
  • 更新企业应用程序的 iOS 开发和 APNs 生产 [AirWatch]

    我为我的公司开发了一个 iOS 应用程序 我们通过 AirWatch 分发它 有些证书即将过期 试图弄清楚该怎么做是非常令人困惑的 我用谷歌搜索了一下 似乎每个页面都有不同的信息 如果有人能指出我正确的方向 我真的很高兴 我有一张 iOS
  • glGenerateMipmap 需要哪个内存屏障?

    我已使用 GL ARB shader image load store 写入纹理的第一个 mipmap 级别 文档指出 在其他操作中使用该图像的内容之前 我需要调用 glMemoryBarrier 以便适当地刷新缓存 例如 在执行 glTe
  • MPNowPlayingInfoCenter 与 Apple Music 冲突

    我正在开发一个在后台播放音乐的音乐播放器 该应用程序与 Spotify 和 Apple Music 集成 用户将仅在其中一项服务中进行身份验证 目前 我可以使用这两种服务在应用程序和后台播放音乐 我也能够设置MPNowPlayingInfo
  • MySql 查询:从表中为每个类别选择前 3 行

    我有一个包含记录的表 它有一行名为category 我插入了太多文章 我只想从每个类别中选择两篇文章 我尝试做这样的事情 我创建了一个视图 CREATE VIEW limitrows AS SELECT FROM tbl artikujt
  • 为什么在 PHP 中对日期格式为“YYYY-MM-DD”的两个字符串进行小于或大于比较会起作用,即使它们是字符串?

    我正在为一个项目编写一段 PHP 代码 该项目将 YYYY MM DD 格式的日期与当前日期进行比较 以查看它是否小于当前日期 在代码的不同点 使用了两种不同的方法进行比较 第一个使用的get timestamp 日期并根据时间戳进行比较
  • 在 MATLAB 中使用转置与 ctranspose

    在 MATLAB 中转置向量 矩阵时 我只看到并使用了 撇号 运算符很长一段时间 例如 gt gt v 1 2 3 v 1 2 3 然而这是共轭转置正如我最近发现的那样 或者ctranspose 这似乎只在涉及复数时才重要 如果你想转置矩阵
  • 旋转时调整 UINavigationBar 的大小

    我有一个 UIViewController 的子类 它处理 UIView 视图控制器以模态方式呈现 它从屏幕底部向上滑动 在视图的顶部 我添加了一个导航栏 请注意 该栏不是由导航控制器处理的 我想让导航栏在视图旋转到横向时缩小高度 类似于
  • 如何更改 iOS7 中 UISearchBar 的取消按钮色调颜色

    我想将 Textfield 的色调颜色更改为蓝色 并将 UISearchBar 的取消按钮色调颜色更改为白色 我正在使用下面的代码 for UIView subView in searchBar subviews for UIView nd
  • Python 列表与数组——何时使用?

    如果要创建一维数组 可以将其实现为列表 或者使用标准库中的 array 模块 我一直对一维数组使用列表 我想改用数组模块的原因或情况是什么 是为了性能和内存优化 还是我错过了一些明显的东西 基本上 Python 列表非常灵活 可以保存完全异