当前位置: 首页 > 面试题库 >

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

叶嘉颖
2023-03-14
问题内容

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

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

是为了性能和内存优化,还是我缺少明显的东西?


问题答案:

基本上,Python列表非常灵活,可以保存完全异构的任意数据,并且可以在摊销后的固定时间内非常高效地附加到它们。如果您需要高效而又省时地缩小和增加列表,则可以采用这些方法。但是它们
比C数组占用更多的空间
,部分原因是列表中的每个项目都需要构造一个单独的Python对象,即使对于可以用简单C类型(例如floatuint64_t)表示的数据也是如此。

array.array类型,在另一方面,是只在C数组的薄包装。它只能保存同构数据(即所有相同类型的数据),因此仅使用sizeof(one object) * length内存字节。通常,在需要将C数组公开给扩展名或系统调用(例如ioctlfctnl)时,应使用它。

array.array也是在Python 2.x()中表示 可变 字符串的一种合理方法array('B', bytes)。但是,Python
2.6+和3.x提供了一个可变 字节
字符串bytearray

但是,如果要对数字数据的均质数组进行 数学运算 ,则最好使用NumPy,它可以自动对复杂的多维数组进行矢量化操作。

简而言之array.array当您需要 除数学之外的其他 原因而需要同构C数据数组时,此选项很有用。



 类似资料:
  • 问题内容: 在Python中,何时应使用列表以及何时使用元组? 有时您别无选择,例如,如果您有 那么x必须是一个元组。 但是,如果我是设计API并选择数据类型的人,那么指导原则是什么? 问题答案: 元组有一种强大的文化,即用于异构集合(类似于您在C中使用s的元组)和列表用于同类集合(类似于用于数组的形式)。但是我从来没有与其他答案中提到的可变性问题完全吻合。可变性有它的作用(实际上您不能更改一个元

  • 我正在尝试编写一个日历。我将我的约会保存在另一个ArrayList中的两个不同的ArrayList中。 字符串(Subject,Place,People)进入另一个ArrayList=arstr中的第一个ArrayList 整数(Date和Time)进入另一个ArrayList=arInt中的第二个ArrayList 当我创建约会时,我希望根据日期对其进行排序。所以如果我想添加一个新的约会,它应该

  • 问题内容: 我已经进行了很多编程工作,最近开始学习更多纯粹的计算机科学主题(用于工作面试)。 我知道Array和LinkedList数据结构之间的区别,但是现在我已经开始使用Java,我看到了这个ArrayList,在概念上我遇到了麻烦。 网络搜索仅真正向我展示了如何使用它们以及何时使用它们(每种优点),但是没有任何东西可以回答我的问题: 什么是ArrayList?我的假设是,它是一个维护对每个元

  • 对于上述代码,我得到的输出为: 但我的期望是得到。 你能指导我实现这一点吗?

  • 问题内容: 如果我有以下两套代码,如何将它们粘合在一起? 如何使用x中连续的元素列表调用c_function?我试图将x强制转换为c_void_p,但这没有用。 我也尝试使用类似 但这会出现语法错误。 C代码显然想要一个数组的地址。我如何做到这一点? 问题答案: 以下代码适用于任意列表: