Python中数组的实现 Python

在 Python 中,数组通常有两种理解: · 内置的列表(list):最常用的“动态数组”,可以存放任意类型元素。 · array 模块:提供类型化的紧凑数组(如 array('i') 存放有符号整数)。 · NumPy 库:科学计算中的多维数组(numpy.ndarray),功能强大。 下面以最常用的 列表(list) 为主介绍,最后补充 NumPy 的二维数组示例。 --- 一、一维数组(列表) 1. 定义
PYTHON
# 空数组
arr1 = []

# 整数数组
arr2 = [1, 2, 3, 4, 5]

# 不同类型混合(一般不推荐)
arr3 = [1, "hello", 3.14]
2. 遍历
PYTHON
# 方法1:直接遍历元素
for x in arr2:
    print(x)

# 方法2:遍历索引
for i in range(len(arr2)):
    print(arr2[i])

# 方法3:同时获取索引和值
for i, val in enumerate(arr2):
    print(f"索引{i}: {val}")
--- 二、二维数组(二维列表) 二维数组可以看作“数组的数组”,即列表中的每个元素又是一个列表。 1. 定义
PYTHON
# 3行4列的二维数组(所有元素初始为0)
rows, cols = 3, 4
matrix = [[0] * cols for _ in range(rows)]
# 结果:[[0,0,0,0], [0,0,0,0], [0,0,0,0]]

# 手动定义
matrix2 = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
⚠️ 注意:不要用 [[0]*cols]*rows 创建二维数组,因为这样每一行都是同一个列表的引用,修改一行会影响所有行。 2. 遍历
PYTHON
# 双重循环(按行,再按列)
for row in matrix2:
    for elem in row:
        print(elem, end=" ")
    print()  # 换行

# 使用索引遍历
for i in range(len(matrix2)):
    for j in range(len(matrix2[i])):
        print(f"matrix2[{i}][{j}] = {matrix2[i][j]}")
3. 示例:矩阵加法
PYTHON
A = [
    [1, 2, 3],
    [4, 5, 6]
]
B = [
    [7, 8, 9],
    [10, 11, 12]
]

# 矩阵加法(对应元素相加)
result = [
    [A[i][j] + B[i][j] for j in range(len(A[0]))]
    for i in range(len(A))
]

print(result)  # [[8, 10, 12], [14, 16, 18]]
--- 三、使用 array 模块(类型化数组) 适合存储大量相同数值类型且需要节省内存的场景。
PYTHON
from array import array

# 定义一维数组(类型码 'i' 表示有符号整数)
arr = array('i', [1, 2, 3, 4, 5])

# 遍历
for x in arr:
    print(x)

# 二维数组:array 本身不支持多维,可以用列表嵌套 array
matrix = [array('i', [1,2,3]), array('i', [4,5,6])]
--- 四、使用 NumPy(推荐用于科学计算) NumPy 提供真正的多维数组对象 ndarray,支持向量化操作,性能极高。 安装(如未安装)
BASH
pip install numpy
示例
PYTHON
import numpy as np

# 定义二维数组
matrix = np.array([
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
])

# 遍历(通常不直接循环,而是用向量化运算,但这里演示遍历)
for row in matrix:
    for elem in row:
        print(elem, end=" ")
    print()

# 更 NumPy 风格的遍历(使用 nditer)
for elem in np.nditer(matrix):
    print(elem, end=" ")
print()

# 矩阵加法(直接使用 +)
A = np.array([[1,2],[3,4]])
B = np.array([[5,6],[7,8]])
C = A + B
print(C)  # [[ 6  8], [10 12]]
--- 总结 方式 优点 适用场景 列表(list) 灵活、内置、简单 一般编程、存储混合类型 array 模块 内存紧凑、类型固定 大量同类型数值,不需要高级运算 NumPy 数组 多维、快速向量化运算 科学计算、数据分析、机器学习 对于初学者,先用 列表嵌套列表 实现二维数组即可,熟练后可引入 NumPy 提升效率。
← 返回列表

评论 (0)

登录后可以发表评论

立即登录
💬

还没有评论,快来发表第一条评论吧!