python创建二维数组方法

#Python# 二维数组的定义、使用的几种方法
通常的困扰
1、先介绍最简单的一种方式
2、再介绍最常见的一种方式
3、最后介绍最暴力直观的一种方式
通常的困扰
之前对Python里面创建、使用二维数组也很懵,于是也上网查了一些讲解,也发现一些类似的问题,大多数存在着 以为定义正确了二维数组,但修改数据的时候,发现数据经常一起串改。如:

    b=[[0,0,0]]*3
    b[0][1]=1    #这里因为初始[0,0,0]可以这样写数据,如果初始空数组则不能
    print(b)
    b[1].append(3)
    print(b)
1
2
3
4
5
输出:

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

因为像这种*3操作,其数据在三个数组里会被一起改掉。

1、先介绍最简单的一种方式
因为Python的数组本身就是动态可变的,同时提供append()函数,该函数不仅可以在一个数组后面添加数字,也可以在后面任意添加数组,如:

    c = []
    c.append([1,2,3,4])
    c.append([5,6,7,8])
    c.append(9)
    print(c)
1
2
3
4
5
最后输出为:
[[1, 2, 3, 4], [5, 6, 7, 8], 9]
该种方法在 已建立 了的数组基础上可以通过c[ i ][ j ]的方式对数据修改和读取:

    c[0][1]=10
1
输出为:
[[1, 10, 3, 4], [5, 6, 7, 8], 9]

2、再介绍最常见的一种方式
    b=[[] for i in range(4)]
    b[0].append(5)
    b[1].append(6)
    print(b)
1
2
3
4
最后输出为:
[[5], [6], [ ], [ ]]
该种方法在最大的好处在于通过b[ i ]来存储二维数据,更加直观和清晰。但需先已知数据行数,这里是四行数据。
但一旦对数据没有通过append()方式添加,而是在位置上直接赋值如:

    b=[[] for i in range(4)]
    b[0]=5
    b[1].append(6)
    print(b)
1
2
3
4
最后输出为:
[5, [6], [ ], [ ]]
看输出就知道对于b[1] 以后就只能是一个数字5,不能再在此位置存储数据。

3、最后介绍最暴力直观的一种方式
    a=[[[]for i in range(3)]for i in range(4)]
1
最后输出为:
[[[], [], []], [[], [], []], [[], [], []], [[], [], []]]
显然建立了四行三列的矩阵,且每个位置上也是数组的形式,如果比较习惯于通过a[i][j]这样的方式来存储读取数据,这种方式很适合,同时也可以在 未建立 数据(即还没有实际数据)的基础上,也能通过c[ i ][ j ]的方式存储修改数据。弊端是要先知道行列数。如果完全了解上面两种方式的话,这种建立二维数组方式感觉很没必要。

    a=[[[]for i in range(3)]for i in range(4)]
    a[0][0]=1
    a[0][1].append(2)
    print(a)
1
2
3
4
最后输出为:
[[1, [2], []], [[], [], []], [[], [], []], [[], [], []]]
这里我们就可以看到直接赋值和append()函数的差别。
————————————————
版权声明:本文为CSDN博主「锌录」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_39729672/article/details/90266122

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值