Python 数组与列表:差异和用例

已发表: 2021-11-03

在过去的几年里,Python 在数据科学中已经超越了其他语言,它的数据结构起着至关重要的作用。 Python有大量的数据结构,其中数组和列表是我们今天要讨论的最流行的。

数组和列表是 Python 中两个突出的数据结构,它们在许多方面都相似。 它们都可以用来存储数据,并使我们能够对它们进行迭代、切片,甚至使用索引方法访问它们的元素。 那么Python中的list和array有什么区别呢? 好吧,这就是我们将在本文中讨论的内容。

目录

Python 中的数组

数组是保存同类元素的连续数据结构,即属于同一数据类型的元素。

以下是 Python 中数组表现出的主要特征:

  • 数组连续性允许数据存储在相邻的内存位置 这使得对数组元素执行操作变得更加容易。
  • Python 中的数组可以通过两种方式声明
    • 使用数组模块

import array # 导入'array'模块

myArray = array.array('i', [10, 20, 30]) # 数组声明

# 创建的数组:[10, 20, 30]

注意:在上述声明中,需要指定格式代码。 这里,“i”是代表整数的格式代码。

  • 使用NumPy模块

import numpy # 导入“numpy”模块

myArray = numpy.array([10, 20, 30]) # 数组声明

# 创建的数组:[10, 20, 30]

  • 数组元素是有序 每个元素都有一个相关的整数索引。 例如,在 arr[10, 20, 30] 中,“10”、“20”和“30”分别存储在内存中的索引 0、1 和 2 处。

注意: Python 中的数组索引从 0 开始。

  • 数组只能包含相同类型的值,即同质元素。 例如,

arr[1, 2, 3]

arr['a', 'b', 'c']

Python 中的数组通常用于存储相似项的列表。 显示器的一个真实用例可以是存储特定股票的股票价格一段时间。 股票的收盘价在特定股票和日期保持不变。 这意味着将这些细节存储在不可变的数据结构(如数组)中更有意义。

事实上,在数据科学和机器学习中,NumPy 数组通常用于存储来自大型数据集的数据。 每个 NumPy 数组对应于数据集中的一个特征。

Python 中的列表

列表是 Python 支持的四种内置容器或数据结构之一。 使用列表的主要优点之一是单个列表可以保存多种数据类型的值。

以下是 Python 中列表表现出的主要特征:

  • 列表在数据存储方面更加灵活。 它们可以包含异构数据,即不同类型的元素。 例如,

[1, '你好', ['x', 'y']]

  • 列表也是有序的,存储在列表中的元素可以使用它们的索引来访问。 负索引可用于从列表末尾访问元素。 例如。,

myList = [20, 40, '你好', '世界']

# 打印倒数第二个元素

打印(我的列表 [-2])

输出

  • 列表初始化可以很容易地改变列表。 要修改任何值,请使用元素的索引访问它。

汽车 = ['福特','特斯拉','捷豹']

汽车[2] = '宝马'

  • 多维列表也可以使用嵌套列表的概念在 Python 中实现。 这些多维列表可以用作 Python 中的多维数组。

myArr = [[1, 2], [3, 4]]

# 创建二维数组:

# |1, 2|

# |3, 4|

Python中多维异构列表的实际用例可以是存储一组产品详细信息,例如产品类型、类别、成本价、售价等。这样的多维列表中的每个列表代表一个产品。 由于列表是可变的,因此我们可以随时更改产品详细信息。

如果您是一名有抱负的 Python 开发人员,那么涵盖 Python 中数组和列表之间的基本区别是一个关键方面。 因此,事不宜迟,让我们直接跳到 Python 数组与列表的表格描述。

了解 Python 中数组和列表的区别

Python 数组 vs 列表:谁是赢家?

范围

列表大批

宣言

列表不需要声明,因为它们是 Python 内置的。

列表 = [ 10 , 20 , 30 ]

您需要导入数组模块或NumPy库才能声明数组。

my_arr_1 = array.array( 'i' , [ 10 , 20 , 30 ])

数据类型

单个列表可以包含属于不同数据类型的值。

myList = [ 40 , '你好' , 'm' ]

数组的所有元素都应具有相同的数据类型。

myArr = arr.array(i, [ 1 , 0 , 9])

尺寸

Python 列表是可调整大小的,因为在列表初始化期间,Python 会初始化一些额外的元素。 数组具有无法更改的恒定大小。

空间/

记忆

添加或删除元素会占用更大的空间和内存。

以更紧凑的方式存储数据。

数据存储

首选用于存储少量数据。

存储大量数据的首选

数学运算

不能直接用于数学运算。

使用高级数学运算可以轻松操作数组元素。

显示数据

列表元素可以不循环显示

my_List = [ 1 , “丹尼斯” ,[ 'a' , 'b' ]]

打印(我的列表)

要显示数组的元素,必须有一个循环。

导入数组

my_Arr = array.array( 'i' , [ 1 , 2 , 3 ])

对于my_Arr 中的 i:

打印(一)

Python 数组 vs 列表:谁是赢家?

如果您正在阅读本节,那么这意味着您现在已经非常熟悉 Python 中列表和数组之间的区别。 但是,您还应该知道何时在程序中使用 Array 或 List。

本节讨论您必须在这两种情况中选择最合适的数据结构的各种情况。

元素类型

如果数据的类型不是预先确定的,则存在属于多种类型的数据的集合。 例如,要存储具有name(string) ID(integer)Marks(float)等实体的学生的记录列表是首选。

如果要存储的数据属于相同的数据类型,那么这里可以首选数组列表然后,选择将取决于其他参数,例如数据大小、要执行的操作和使用情况。

内存消耗

列表中的内存消耗更多,因为在列表初始化期间分配了一些额外的空间。 如果数据集合相对较小,那么这里的列表是一个有效的选择。

图片来源:webcourses@UCF

数组适合存储大量数据,因为数组的内存消耗比列表更有效。

图片来源:webcourses@UCF

支持的操作

如果您的数据不需要任何算术运算,那么列表可能是更好的选择,因为它支持更好的数据操作内置函数。

另一方面,当需要进行数学运算时,应该使用数组NumPy 模块支持许多高级数学运算,包括三角函数和对数运算。

需要导入的模块

可以在不导入任何模块或库的情况下声明列表 它可以像通常的变量一样定义,因为它是 Python 中的内置数据结构。

但是,数组不是 Python 的默认容器之一。 有两个最流行的模块——arrayNumPy 每个模块都带有一些预定义的函数来操作和管理存储在数组中的数据。

结论

本文涵盖了让您深入了解 Python 中数组和列表之间的区别所需的所有主题。 我们还讨论了适合列表或数组的各种用例。

如果您想开始您的数据科学之旅,请注册 upGrad 的数据科学 今天的课程。 查看upGrad上广泛的课程集合 开始你的职业生涯。

何时在 Python 中的列表上使用数组?

在各种情况下,Python 数组优于列表:

1、由于Python中的数组比列表更紧凑,占用内存更少,所以在需要存储大量数据时,优先使用数组。
2. 当所有元素的数据类型相同时,不需要使用列表来存储数据,因此在这里使用数组会更有效。
3. 存储在数组中的数据可以很容易地进行数学操作,而使用列表则非常不方便。

Python中的数组和列表之间哪个更快?

数组比 python 中的列表更快,因为存储在数组中的所有元素都是同质的,即它们具有相同的数据类型,而列表包含异构元素。

此外,Python 数组是用 C 实现的,这使得它比 Python 本身内置的列表快得多。

什么时候列表更适合在 Python 中存储数据?

Python列表在数据存储方面意义重大,可以在多种情况下使用:

1.当你有不同数据类型的各种元素时,你可以将它们存储在一个列表中,并且可以通过简单地引用它们的索引来访问这些元素。
2. 列表也可以调整大小。 因此,当您不确定元素的数量时,列表很有用。
3.当需要存储少量数据时,列表是非常可取的,因为列表的内置函数非常方便数据操作。