在 Python 中,列表和数组都用于存储数据。此外,这两种数据结构都允许索引、切片和迭代。那么 Python 中的数组和列表有什么区别呢?在本文中,我们将详细解释何时使用 Python 数组而不是列表。

Python 有许多具有不同特性和功能的数据结构。其内置数据结构包括 列表 、元组、集合和字典。但是,这并不是 Python 中可用的数据结构的详尽列表。可以从不同的模块或包中导入一些其他数据结构。

数组 数据结构属于“必须导入”类别。要在 Python 中使用数组,您需要从 NumPy 数组 模块 .

这就是列表和数组之间的第一个区别。在深入探讨这两种数据结构之间的区别之前,让我们先回顾一下列表和数组的特性和功能。

Python 中的列表是什么?

列表用于保存项目集合。列表具有许多重要特征:

  • 列表项括在方括号中,例如 [item1, item2, item3] .
  • 列表是 有序的 ——即列表中的项目按特定顺序出现。这使我们能够使用索引来访问任何项目。
  • 列表是 可变的 ,这意味着您可以在创建列表后添加或删除项目。
  • 列表元素 不需要唯一 。项目可以重复,因为每个元素都有自己独特的位置,并且可以通过索引单独访问。
  • 元素可以是 不同的数据类型 :您可以在同一个列表中组合字符串、整数和对象。

在 Python 中创建列表非常容易:

list = [3, 6, 9, 12]
print(list)
print(type(list))
[3, 6, 9, 12]

Python 列表几乎随处可用,因为它们是保存项目序列并对其进行迭代的绝佳工具。

Python 中的数组是什么?

数组 也是一种存储项目集合的数据结构。与列表一样,数组也是 有序 且可变的 , ,用方括号括起来 并且 能够存储 非唯一 项目。

但当谈到数组存储不同数据类型的能力时,答案就不那么简单了。这取决于所使用的数组类型。

要在 Python 中使用数组,您需要导入 array module NumPy package .

import array as arr
import numpy as np

Python array module requires all array elements to be of the same type 。此外,要创建数组,您需要指定值类型。在下面的代码中, “i” 表示 array_1 都是整数:

array_1 = arr.array("i", [3, 6, 9, 12])
print(array_1)
print(type(array_1))
array('i', [3, 6, 9, 12])

另一方面, NumPy arrays support different data types 。要创建 NumPy 数组,只需指定项目(当然,用方括号括起来):

array_2 = np.array(["numbers", 3, 6, 9, 12])
print (array_2)
print(type(array_2))
['numbers' '3' '6' '9' '12']

如您所见, array_2 字符串 的项目 (即 "numbers" )和四个整数。

那么有什么区别呢?

现在我们知道了它们的定义和特点,我们可以谈谈 Python 中列表和数组之间的区别:

  • 数组需要声明。列表不需要 ,因为它们是 Python 内置的。在上面的例子中,您看到列表是通过简单地将元素序列括在方括号中来创建的。另一方面,创建数组需要数组模块 array.array() )或 NumPy 包(即 numpy.array() )中的特定函数。因此,列表比数组使用得更频繁。
  • 数组可以非常紧凑地存储数据 ,并且对于存储大量数据更为高效。
  • 数组非常适合数值运算 ;列表无法直接处理数学运算。例如,只需一行代码即可将数组的每个元素除以相同的数字。如果您尝试对列表执行相同操作,则会出错。
array = np.array([3, 6, 9, 12])
division = array/3
print(division)
print (type(division))
[1. 2. 3. 4.]
list = [3, 6, 9, 12]
division = list/3
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)in()
      1 list = [3, 6, 9, 12]
----> 2 division = list/3

TypeError: unsupported operand type(s) for /: 'list' and 'int'

当然,也可以用列表进行数学运算,但效率要低得多:

Code Editor

摘自《Python 数据结构实践》课程

那么,什么时候应该使用列表,什么时候应该使用数组?

  • 如果您需要存储相对较短的项目序列,并且不打算对其进行任何数学运算,则列表首选。此数据结构允许您存储有序、可变且有索引的项目序列,而无需导入任何其他模块或包。
  • 如果你有一个很长的项目序列,请考虑使用数组此结构提供更高效的数据存储。
  • 如果你计划对项目组合进行任何数值运算,请使用数组数据分析和数据科学严重依赖(主要是 NumPy)数组。

是时候练习 Python 数组和列表了!

太棒了!现在你知道了 Python 中数组和列表的区别。你还知道了应该选择哪一个作为项目序列。现在是时候练习了!

如果您想加深对数据结构的理解并练习 100 多个交互式练习,请查看 课程《 Python Data Structures in Practice 。它将帮助您在处理列表、嵌套列表、元组、集合和字典时感觉自己像个专业人士。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部