Python数组和列表[重复]
Posted
技术标签:
【中文标题】Python数组和列表[重复]【英文标题】:Python Array and a List [duplicate] 【发布时间】:2021-08-02 21:41:50 【问题描述】:为什么python有专门的数组模块?
我知道数组只能保存一种数据类型,而 Python 有一个用于数组的模块,但为什么 python 有一个用于数组的特定模块,因为如果我们愿意,我们可以创建一个具有相同数据类型的列表。
那么在 python 中使用数组模块的实际优势是什么?
这是一个数组:
from array import *
a = array("i", [5, 8])
print(a)
我可以用列表做同样的事情:
a = [5, 8]
print(a)
python模块数组有什么好处?
【问题讨论】:
根据可爱的 GeeksForGeeks 的说法。数组可以在 Python 中由名为数组的模块处理。当我们只需要操作特定的数据类型值时,它们会很有用。用户可以将列表视为数组。但是,用户不能限制存储在列表中的元素的类型。如果使用 array 模块创建数组,则数组的所有元素必须属于同一类型。 geeksforgeeks.org/python-arrays 【参考方案1】:我认为这很好地解释了这一点。 https://learnpython.com/blog/python-array-vs-list/
使用数组而不是列表的一些关键原因:
-
数组更紧凑地存储信息,使其更高效、更强大。
数组适用于数值运算。
使用列表而不是数组的一些关键原因:
-
列表非常适合将多种数据类型组合在一起。
列表是可变的,这意味着它们可以更改。
虽然列表和数组可能具有相似的特性,但它们用于不同的情况。
【讨论】:
欢迎来到 Stack Overflow!请使用tour 并阅读How to Answer。仅链接的答案很糟糕!您应该在此处总结您的答案中的链接页面,这样您的答案就不会在link-rot 的情况下变得无用。 Why is linking bad? | Are answers that just contain links elsewhere really “good answers”? | Your answer is in another castle: when is an answer not an answer? 还请注意,当您发现与此问题重复的问题时,建议的操作是标记/投票以将此问题作为重复问题关闭。您不应添加链接重复问题的答案。 链接learnpython.com/blog/python-array-vs-list对我有很大帮助,谢谢。 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review 好的,我将编辑答案以总结链接。【参考方案2】:Python 中的列表指的是链表,其中一个成员存储还存储列表的下一个成员应该在的位置。基本上,member1 存储 member2 在内存中的位置,member2 存储 member3 的位置,依此类推。
虽然数组是一大块连续内存。它与从第一个成员跳转到其他成员的数据类型相同,需要了解它们在内存中的确切间隙,这只有在数据类型相同或大小相同时才有可能。拥有不同数据类型的数组将非常低效。
从列表中添加或删除元素/成员更容易,但解析数组更快。这是一个权衡。
Python 主要用于数据科学,这意味着元素的添加和删除频繁,因此数组是隐藏在模块中的第二选择。
顺便说一句,没有人使用数组模块,只使用numpy。
【讨论】:
非常感谢,现在我了解了列表和数组是如何存储数据的,我开始使用 numpy 模块【参考方案3】:List比较好,但是如果要存储大量数据,可以使用array。 因为数组会更紧凑、更高效地存储您的数据
【讨论】:
你不能只说“列表更好”,这取决于具体的用例。在大多数情况下,使用数组会更好,因为它们在大多数情况下更快。我并不是说数组更好,我只是说在大多数用例中数组更快。 我也同意@Shambhav Gautam【参考方案4】:在大多数情况下,List 都可以。 Python 中数组的概念可能会让其他编程语言背景的人感到困惑。
该数组模块是 C 数组的包装器,只能用于特定类型,而列表可以用于任何对象。
如果您不喜欢数值计算,并且不使用 scipy 和 numpy 等科学软件包,我认为没有理由使用 array 模块
【讨论】:
以上是关于Python数组和列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Python - 如何创建一个空的numpy数组并附加到它,如列表[重复]