【python】利用list和numpy初始化二维数组

初始化二维数组方法

下面均以数组最里层数据类型为str为例,其余数据类型同理。

1. 利用list初始化一维数组
# 长度为5,存储数据为5个空字符串
array_1: list[str] = [''] * 5
# 长度为5,声明存储数据类型为str
array_1: list[type(str)] = [str] * 5
# 索引访问方法
array_1[i]

① 显式声明list[str]、list[type(str)]都是可以省略的,之后初始化二维数组同理。

[str] * 5是为不赋初值的写法,与[''] * 5的区别在于存储数据类型不同,在某些场景可能报错或警告,比如在调用splitlines()时会警告,因为类型不匹配,但不影响使用。解决方式为使用具体实例初始化,比如字符串就用 ‘’、'0’等,int就用0、1、2等等。一个不行就换另一个,后面多维同理。

2. 利用list初始化二维数组
# 一个5*6的二维数组,存储数据为30个空字符串
array_2: list[list[str]] = [['' for col in range(5)] for row in range(6)]
# 一个5*6的二维数组,声明存储数据类型为str
array_2: list[type(list[str])] = [[str for col in range(5)] for row in range(6)]
# 索引访问方法
array_2[i][j]

① 同一维数组,既可使用实例初始化,也可只指明数据类型。多维同理,多层嵌套即可。

② 需要注意的是列表初始化多维数组不能使用[[''] * 5] * 6形式,这样的操作只是对索引的拷贝,即把一个一维数组复制了五份,即列表的浅拷贝,并未得到一个真正意义上的二维数组。该方法可以在numpy中使用。

3. 利用numpy初始化二维数组
# 一个5*6的二维列表,存储数据为30个空字符串
array_3: np.ndarray = np.array([[''] * 5] * 6)
# 一个5*6的二维列表,声明存储数据类型为str
array_3: np.ndarray = np.array([[str] * 5] * 6)
# 索引访问方法
array_3[i, j]

利用numpy就可以直接采用2-②中提到的方法了。多维直接嵌套即可。

附一下上述代码输出结果:

print(f"一维数组array_1为:\n{array_1}\n"
      f"二维数组array_2为:\n{array_2}\n"
      f"二维数组array_3为:\n{array_3}")

''
str

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值