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),从而加速数值计算。
在数据科学和机器学习领域中通常会用到数组。而对于一些简单的数据处理需求,可以选用列表。