详解Python 数组数据结构

  • Post category:Python

Python 的数组数据结构

Python 中的数组可以使用列表(List)或 NumPy 数组来实现。

列表(List)实现数组

Python 中的 List 是一种有序的可变序列,支持任意类型的数据,包括数字、字符串、布尔值、对象等等。List 可以通过下标访问元素,也可以通过切片访问某一范围内的元素,并且支持添加、删除、修改等操作。

创建 List

可以通过以下方式来创建 List:

# 空列表
my_list = []

# 初始化列表
my_list = [1, 2, 3, 4]

# 列表嵌套
my_list = [[1, 2], [3, 4], [5, 6]]

访问元素

可以通过下标访问 List 中的元素,下标从 0 开始,例如:

my_list = [1, 2, 3, 4]
print(my_list[0])  # 输出 1
print(my_list[1])  # 输出 2

也可以使用负数下标访问 List 中的元素,例如:

my_list = [1, 2, 3, 4]
print(my_list[-1])  # 输出 4
print(my_list[-2])  # 输出 3

我们也可以使用切片来获取一个 List 中的一部分元素,例如:

my_list = [1, 2, 3, 4]
print(my_list[1:3])  # 输出 [2, 3]

修改元素

List 中的元素是可变的,可以通过下标修改元素的值,例如:

my_list = [1, 2, 3, 4]
my_list[0] = 5
print(my_list)  # 输出 [5, 2, 3, 4]

添加元素

List 中可以使用 append()、insert() 和 extend() 方法来添加元素。其中,append() 方法用于在 List 的末尾添加一个元素,insert() 方法用于在 List 的指定位置插入一个元素,extend() 方法用于将一个 List 中的元素添加到另一个 List 中。

my_list = [1, 2, 3, 4]
my_list.append(5)
print(my_list)  # 输出 [1, 2, 3, 4, 5]

my_list.insert(0, 0)
print(my_list)  # 输出 [0, 1, 2, 3, 4, 5]

my_list2 = [6, 7, 8]
my_list.extend(my_list2)
print(my_list)  # 输出 [0, 1, 2, 3, 4, 5, 6, 7, 8]

删除元素

List 中可以使用 remove()、pop() 和 del 语句删除元素。其中,remove() 方法用于删除 List 中的指定元素,pop() 方法用于删除 List 中的指定位置的元素,并返回被删除的元素值,del 语句用于删除 List 中的指定位置的元素。

my_list = [1, 2, 3, 4]
my_list.remove(2)
print(my_list)  # 输出 [1, 3, 4]

my_list.pop(0)
print(my_list)  # 输出 [3, 4]

del my_list[1]
print(my_list)  # 输出 [3]

示例

以下示例演示了如何创建一个 List,并在其中添加、删除元素,并修改其中的元素值:

my_list = [1, 2, 3, 4]

# 添加元素
my_list.append(5)
my_list.insert(0, 0)

# 修改元素值
my_list[0] = -1

# 删除元素
my_list.remove(3)

print(my_list)  # 输出 [-1, 1, 2, 4, 5]

NumPy 数组实现数组

NumPy(Numerical Python)是 Python 中用于科学计算的一个重要库,它提供了高效的多维数组对象,以及用于数组操作的各种函数。NumPy 中的数组对象是固定大小(大小不可变)且类型一致的,可以支持高效的向量化运算(即运算可以同时作用于整个数组上)。

安装 NumPy

NumPy 可以通过 pip 安装,命令如下:

pip install numpy

创建数组

可以通过以下方式来创建 NumPy 数组:

import numpy as np

# 从列表创建数组
my_array = np.array([1, 2, 3, 4])

# 从元组创建数组
my_array = np.array((1, 2, 3, 4))

# 创建指定大小的数组
my_array = np.zeros((3, 4))  # 创建一个 3 × 4 的全零数组
my_array = np.ones((3, 4))  # 创建一个 3 × 4 的全一数组
my_array = np.full((3, 4), 5)  # 创建一个 3 × 4 的全为 5 的数组
my_array = np.arange(0, 10, 2)  # 创建一个步长为 2 的等差数列数组 [0, 2, 4, 6, 8]
my_array = np.linspace(0, 1, 5)  # 创建一个在 [0, 1] 区间内等分为 5 段的线性数组 [0. 0.25 0.5 0.75 1.]
my_array = np.random.randint(low=0, high=10, size=(3, 4))  # 创建一个 3 × 4 的随机整数数组,取值范围为 [0, 10)

访问元素

可以通过下标访问 NumPy 数组中的元素,下标从 0 开始,例如:

my_array = np.array([1, 2, 3, 4])
print(my_array[0])  # 输出 1
print(my_array[1])  # 输出 2

也可以使用负数下标访问 NumPy 数组中的元素,例如:

my_array = np.array([1, 2, 3, 4])
print(my_array[-1])  # 输出 4
print(my_array[-2])  # 输出 3

我们也可以使用切片来获取一个 NumPy 数组中的一部分元素,例如:

my_array = np.array([1, 2, 3, 4])
print(my_array[1:3])  # 输出 [2, 3]

修改元素

由于 NumPy 数组中的元素类型是固定的,因此只能修改元素的值,不能修改元素的类型,例如:

my_array = np.array([1, 2, 3, 4])
my_array[0] = 5
print(my_array)  # 输出 [5 2 3 4]

示例

以下示例演示了如何创建一个 NumPy 数组,并访问其中的元素值:

import numpy as np

my_array = np.array([1, 2, 3, 4])

# 访问元素值
print(my_array[0])
print(my_array[-1])
print(my_array[1:3])

以上是 Python 中数组数据结构的使用方法攻略,希望对你有所帮助。