首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python列表与数组--什么时候使用?

Python列表与数组--什么时候使用?
EN

Stack Overflow用户
提问于 2008-10-06 20:17:43
回答 8查看 349.7K关注 0票数 420

如果你正在创建一个一维数组,你可以将它实现为一个列表,或者在标准库中使用' array‘模块。我一直使用列表来表示一维数组。

我想使用阵列模块的原因或情况是什么?

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

EN

回答 8

Stack Overflow用户

发布于 2008-10-06 20:24:39

对于几乎所有的情况,正常列表都是正确的选择。数组模块更像是C数组上的薄包装器,它为您提供了某种强类型容器(请参阅docs),可以访问更多类似C的类型,如有符号/无符号的短整型或双精度型,这些类型不是内置类型的一部分。我要说的是,只有当你真的需要它的时候才使用数组模块,在所有其他情况下都要使用列表。

票数 69
EN

Stack Overflow用户

发布于 2008-10-07 14:00:40

如果您不知道为什么要使用数组模块(请注意,我并不是试图以一种居高临下的方式说明这一点),那么您可能不需要数组模块。大多数情况下,数组模块用于与C代码进行接口。为了更直接地回答您提出的有关性能的问题:

在某些情况下,数组比列表更有效。如果你需要分配一个你知道不会改变的数组,那么数组可以更快,使用更少的内存。GvR有一个optimization anecdote,其中数组模块是赢家(读了很久,但很值得)。

另一方面,列表比数组占用更多内存的部分原因是,当所有分配的元素都被使用时,python会分配一些额外的元素。这意味着将项目追加到列表中会更快。因此,如果您计划添加项目,列表是可行的。

如果你有特殊的优化需求,或者你需要与C代码接口(而不能使用pyrex),我才会使用数组。

票数 55
EN

Stack Overflow用户

发布于 2008-10-06 20:22:51

我的理解是,数组的存储效率更高(例如,作为连续的内存块而不是指向Python对象的指针),但我不知道有什么性能上的好处。此外,对于数组,您必须存储相同类型的基元,而列表可以存储任何内容。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/176011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档