python创建二维数组的不同方式以及整列赋值的问题

一、会出现整列赋值的创建方式

在C中输入二维数组形式非常熟悉(采用codeblocks):输入一行的数字,每个之间空格隔开,回车继续输下一行

在python中采用同样的形式输入(采用PyCharm):

代码如下:

python创建二维数组的不同方式以及整列赋值的问题_第1张图片

输入:

python创建二维数组的不同方式以及整列赋值的问题_第2张图片

其中输入3->回车,输入4->回车,表示构建了一个A[4][3]的矩阵。输入1 2 3->回车,输入4 5 6->回车,输入7 8 9->回车,输入0 1 2->回车

输出:


这样创建二维列表在后续的使用中遇到了问题。

比如我的本意是把第二行第二个元素赋值为1,而输出如下

python创建二维数组的不同方式以及整列赋值的问题_第3张图片


他将我每一行的第二列都赋值为了1,原因是因为我的二维列表创建方式导致了[[]]*4表示的是4个同时指向一个列表的引用,也就是4行都指向的是同一个列表,改变任意一个都会改变每一行的当列数据。

二、避免浅拷贝的创建方式

python创建二维数组的不同方式以及整列赋值的问题_第4张图片


可以知道,上图的两种创建方式都可以避免浅拷贝,总结来说只要对于行不要使用*M这种写法,都可以避免。

第一种创建方式可以在创建时就固定二维列表的行和列。第二种创建方式可以初始只能固定行数,每一行的数据可以在后续append进去。




写此篇文章仅仅是为了巩固知识,小辣鸡一枚






你可能感兴趣的:(python,二维列表)