Python计算——二维数组的实现

本文介绍Python中列表(list)的动态扩展方法及使用技巧,包括如何初始化一个特定大小且默认值为0的二维列表。
在python中的数组是可以动态增加的,但只可以按顺序加。比如:
a=[] 这是一个空数组(对了,在python中专门有数组模块,内置的类型叫list,译为列表,它是动态可变的,不象C中要么在写程序时,写好数组的个数,要么动态分配,就如上面所写,要执行两次)
增加时a.append('a')就可以了。只要按顺序加,就没有问题 。
使用时,完全可以使用下标:
a[0]
a[1]
但如果引用不存在的下标,则会引发异常。这时,你需要先添加元素,再引用就没有问题 了。如果想预先保留空间,可以使用循环来给list,每个元素一个缺省值,再引用就不会有问题 了。
如:

a=[]
for i in range(100):
    a.append([])
    for j in range(100):
        a[i].append(0)


这样就生成了一个100*100缺省值为0的数组。
### Python 中创建二维数组的方法 在 Python 中,可以通过多种方式来创建二维数组。以下是常见的三种方法及其特点: #### 方法一:使用嵌套列表 最简单的方式是通过嵌套列表手动定义二维数组。这种方式适合小型项目或者临时性的数据存储需求。 ```python test = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] print(test) ``` 这种方法的优点是直观易懂,缺点是在处理大规模数据时效率较低[^1]。 另一种更灵活的生成方式是使用列表推导式。例如,要创建一个 m 行 n 列的二维数组,可以这样做: ```python m, n = 3, 4 test = [[0 for _ in range(n)] for _ in range(m)] print(test) ``` 需要注意的是,直接复制列表可能会导致意外行为。例如下面的例子展示了浅拷贝带来的问题: ```python a = [[]] * 3 a[0].append(1) print(a) # 输出为 [[1], [1], [1]], 不符合预期 ``` 为了避免这种错误,应该采用深拷贝的方式来初始化每一行。 --- #### 方法二:使用 NumPy 库 NumPy 是 Python 科学计算的核心库之一,提供了强大的多维数组支持。相比于原生列表,NumPy 数组具有更高的性能和更多的功能。 ##### 使用 `np.array()` 构造二维数组 可以直接从现有的嵌套列表转换成 NumPy 数组: ```python import numpy as np data = [[1, 2, 3], [4, 5, 6]] array_data = np.array(data) print(array_data) ``` ##### 使用 `np.zeros()`, `np.ones()`, 或其他函数快速构建固定大小的数组 这些函数允许我们方便地创建填充了零、一或者其他特定值的二维数组。 ```python rows, cols = 3, 4 zeros_array = np.zeros((rows, cols), dtype=int) ones_array = np.ones((rows, cols), dtype=float) print(zeros_array) print(ones_array) ``` 还可以自定义初始值: ```python custom_value_array = np.full((rows, cols), fill_value=-1, dtype=int) print(custom_value_array) ``` 注意查看数组形状是否满足要求: ```python print('Shape of zeros_array:', zeros_array.shape) # 结果应该是 (3, 4) ``` 此方法非常适合需要高效数值运算的应用场景[^2]^。 --- #### 方法三:矩阵(Matrix) 尽管 NumPy 提供了一个专门用于表示矩阵的对象——`matrix` 类型,但由于它已经被标记为过时,并推荐改用普通的 `ndarray` 来完成相同的操作[^3],因此一般不再单独讨论 matrix 的应用。 不过为了完整性提一下它的基本用法: ```python from numpy import matlib mat = matlib.matrix([[1, 2], [3, 4]]) print(mat) ``` --- ### 总结 - 如果只是简单的程序开发或学习阶段,可以选择基于标准库的 **嵌套列表**。 - 当涉及到大量数据处理、科学计算等领域,则强烈建议选用 **NumPy** 工具集。 - 尽量避免旧版遗留下来的专用类如 Matrix ,除非特殊历史原因必须兼容老代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值