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

  • Post category:Python

Python中的列表(List)和数组(Array)在某些方面有相似之处,但它们在本质、用途和性能上有很大的区别。

列表 List

列表是Python中最常用的数据类型之一,它是一个可变的有序序列,在列表中可以存储不同类型的数据(如整数、字符串、浮点数、布尔值等)。列表以方括号 [] 表示,其中的元素以逗号隔开。

基本操作

对于列表,可以有以下基本操作:

  • 插入一个元素:用 append() 或 insert() 函数实现,append() 会把元素插在末尾,insert() 可以在列表的任意位置插入一个元素。
  • 删除一个元素:用 del、pop() 或 remove() 函数实现,其中 del 可以删除任意位置上的元素,pop() 删除末尾元素并把它的值返回,remove() 函数可以根据元素的值删除第一个匹配的元素。
  • 列表切片:用切片符号 : 可以返回列表的一个子集,包括指定的起始位置和结束位置,此外还可以制定步长。例如,list[1:3] 可以返回列表的第2个和第3个元素。
  • 其他常用操作:索引元素或遍历列表。

示例1–向列表中添加一个元素

fruits = ["apple", "banana", "orange"]
fruits.append("pear")
print(fruits)  # ["apple", "banana", "orange", "pear"]

示例2–从列表中删除一个元素

fruits = ["apple", "banana", "orange", "pear"]
del fruits[2]
print(fruits)  # ["apple", "banana", "pear"]

数组 Array

数组也是一个有序序列,但它只能存储相同类型的数据。数组在Python中不是核心数据类型,需要利用第三方库numpy实现。

基本操作

数组的基本操作与列表类似:

  • 插入一个元素:使用numpy库的append() 函数向数组中添加元素。
  • 删除一个元素:使用numpy库的delete() 函数删除数组中的元素。
  • 数组切片:用切片符号 : 可以返回数组的一个子集,包括指定的起始位置和结束位置,此外还可以制定步长。例如,array[1:3] 可以返回数组的第2个和第3个元素。
  • 其他操作:索引元素或遍历数组。

示例1–使用numpy库创建数组,并向数组中添加元素

import numpy as np

arr = np.array([1, 2, 3])
arr = np.append(arr, [4, 5, 6])
print(arr)  # [1, 2, 3, 4, 5, 6]

示例2–使用numpy库创建数组,删除数组中的元素

import numpy as np

arr = np.array([1, 2, 3, 4, 5, 6])
arr = np.delete(arr, [2, 3])
print(arr)  # [1, 2, 5, 6]

列表和数组的区别

列表和数组的主要区别在于:

  • 列表可以存储不同类型的数据,而数组只能存储相同类型的数据。
  • 数组可以进行DataFrame和矩阵计算,而列表的计算速度较慢。
  • 数组在处理大量数值运算时效率更高,因为数组是连续内存区域,支持向量化运算,能够利用CPU的SIMD指令集(如SSE、AVX),从而加速数值计算。

在数据科学和机器学习领域中通常会用到数组。而对于一些简单的数据处理需求,可以选用列表。