遇到的问题
今天写Python代码的时候遇到了一个大坑,问题是这样的,我需要创建一个二维数组,如下:
输出结果如下:
是不是看起来没有一点问题?
一开始我也是这么觉得的,以为是我其他地方用错了什么函数,结果这么一试:
输出结果如下:
是不是很惊讶?! 这个问题真的是折磨我一个中午,去网上一搜,官方文档中给出的说明是这样的:
Note also that the copies are shallow; nested structures are not copied. This often haunts new Python programmers; consider:
What has happened is that [[]] is a one-element list containing an empty list, so all three elements of [[]] * 3 are (pointers to) this single empty list. Modifying any of the elements of lists modifies this single list. You can create a list of different lists this way:
也就是说matrix = [array] * 3操作中,只是创建3个指向array的引用,所以一旦array改变,matrix中3个list也会随之改变。
2.创建二维数组的办法
2.1 直接创建法
简单粗暴,不过太麻烦,一般不用。
2.2 列表生成式法
学会使用列表生成式,终生受益。
2.3 使用模块numpy创建
领取专属 10元无门槛券
私享最新 技术干货