二维数组(好坑)的使用python

创建list二维数组(好坑)python

列表能创建多维数组?
li= [0] * 3
print(li)
#[0, 0, 0]
li_two = [[0] * 3] * 3
print(li_two )
#[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

好像很完美的操作,但是如果进行一些列表赋值,就出现问题了。

li_two = [[0] * 3] * 3
li_two[1][1] = 1
print(li_two)
#[[0, 1, 0], [0, 1, 0], [0, 1, 0]]

原因是浅拷贝,以这种方式创建的列表,li_two 里面的三个列表的内存是指向同一块,修改哪个列表,其他两个列表也会跟着改变。
所以这样风险太大了,调了我几个小时的时间,我真的是醉醉哒,,,

如果要使用列表创建一个二维数组,可以使用生成器来辅助实现。

arr = [[0 for i in range(3)] for j in range(3)]
print(arr)
arr[1][1] = 3
print(arr)
#[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
#[[0, 0, 0], [0, 3, 0], [0, 0, 0]]

还可以使用numpy

import numpy as np
# 创建一维数组
arr= np.array([1, 2, 3])
# 创建二维数组
arr= np.array([[1, 2, 3], [4, 5, 6]])

# 创建一个 3x4 的数组且所有值全为 0
arr1 = np.zeros((3, 4), dtype=int)
arr2 = np.ones((3, 4), dtype=int)
# 创建一个 3x4 的数组,将所有元素的值填充为 2
arr3 = np.full((3, 4), 2, dtype=int)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值