作者变优秀的小白

Python中list和array区别

什么是python中的列表(list)?

列表(list)是Python内置的数据结构,它拥有很多重要的特性

  • 列表的基本形式 -> 如[item1, item2, itme3]
  • 列表是有序的 -> 即列表中项目以特定顺序显示,使我们可使用索引来使用任何项目
  • 列表是可变的 -> 意味着你可以创建列表后进行添加或删除列元素
  • 列表元素不唯一 -> 意味着可以有相同的元素在一个列表中,每个元素有自己独立的存储空间且通过索引进行访问
  • 列表元素可以是不同的数据类型 -> 意味着你可以在一个列表中组合多种类型的元素

适用场景: 保存序列、迭代、递归

什么是python中的数组(array)?

一个数组也是一个数据结构,在Python中你使用数组的话,需要导入arrayNumPy的包

特性与列表类似:

  • 有序的
  • 可变的
  • 基本形式为方括号
  • 不唯一

注意的是!

  • Python中的数组模块需要所有数组元素都具有相同类型

举个例子:

# 指定i,表示所有元素都为int类型
array_1 = arr.array("i", [3, 6, 9, 12])
print(array_1)
print(type(array_1))

output

array('i', [3, 6, 9, 12])
<class 'array.array'>
  • NumPy不同,支持所有不同的数据类型

举个例子

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

output

['numbers' '3' '6' '9' '12']
<class 'numpy.ndarray'>

所以,列表和数组有啥区别呢?

  • 数组需要声明,列表不用(因为是python内置的)。
  • 数组可以高效的存储数据(特别是面向大量数据时)。
  • 数组非常适合数组运算,而列表不行(报错)。

我们可以直接看看例子

  • 这是数组的
array = np.array([3, 6, 9, 12])
division = array/3
print(division)
print (type(division))

# output
[1, 2, 3, 4]
<class'numpy.ndarray'>
  • 这是列表的
list = [3, 6, 9, 12]
division = list/3

# output
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'

当然是可以对列表进行数值运算的(通过for循环, 效率很低)

那我们如何选择数组或列表呢?

  • 场景一: 需要存储相对较短的元素序列且不进行数值运算,使用列表
  • 场景二: 元素序列很长,使用数组。因为数组结构提供了更有效的数据结构
  • 场景三: 对元素组合进行数值计算,使用数组
结束语:如果遇到什么疑问或者建议的,可直接留言评论!作者看到会马上一一回复

如果觉得小白此文章不错或对你有所帮助,期待你的一键三连💫!❤️ni