python list 创建二维数组的坑

今天使用list 创建二维数组,使用方法是:

a=[[0]*3]*5

显示

[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]

看起来完美,结果修改其中一个元素 a[1][2]=1,显示如下:

[[0, 0, 1], [0, 0, 1], [0, 0, 1], [0, 0, 1], [0, 0, 1]]

明明我只修改了一个元素,为什么其他行的元素都变了。

官方的解释是

也就是说,A=[array]*5得到的只是5个array的引用,改变array,A中的元素都会改变。

使用list创建二维数组可以列表生成式法:

A=[[0 for i in range(n)]for j in range(m)]

 

Python中,数组尺寸通常指的是数组的一维大小或者多维度数组的各个轴向的长度。对于一维数组,其尺寸即为元素的数量;对于多维度数组(如二维、三维等),则指各轴方向的长度。 ### 使用NumPy库读取数组尺寸 Python中最常用的处理数组的数据结构库是NumPy,它可以方便地创建、操作和处理数组。 #### 创建数组 首先,我们需要导入NumPy库并使用`numpy.array()`函数来创建数组: ```python import numpy as np # 创建一个简单的1D数组 array_1d = np.array([1, 2, 3]) # 创建一个2D数组(矩阵) array_2d = np.array([[1, 2], [3, 4]]) ``` #### 获取数组尺寸 获取数组的尺寸可以用多种方式: - 对于1D数组,`shape`属性返回的是单个数值,表示元素数量: ```python print(array_1d.shape) # 输出: (3,) ``` - 对于多维数组,`shape`属性是一个元组,每个元素代表对应轴的方向上的长度: ```python print(array_2d.shape) # 输出: (2, 2) ``` #### 示例代码 下面是一个完整的示例,演示如何创建不同类型的数组以及如何查看它们的尺寸: ```python import numpy as np # 创建一个1D数组 one_dim_array = np.array([10, 20, 30]) print("One-dimensional array shape:", one_dim_array.shape) # 创建一个2D数组(矩阵) two_dim_array = np.array([[1, 2], [3, 4], [5, 6]]) print("Two-dimensional array shape:", two_dim_array.shape) # 创建一个3D数组 three_dim_array = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) print("Three-dimensional array shape:", three_dim_array.shape) ``` ### 相关问题: 1. **如何在循环中遍历多维数组的每一项?** 可以通过嵌套循环或者利用NumPy的`.flatten()`方法将多维数组转换成一维数组来进行遍历。 2. **为什么需要使用NumPy而不是纯Python列表来处理大型数据集?** NumPy提供高性能的数学运算支持,并且数组的操作比Python列表快得多,适合大数据量的处理。 3. **如何对NumPy数组进行索引和切片?** NumPy数组支持标准的Python列表切片语法,还可以使用负数索引来从数组末尾开始访问元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值