神甫 发表于 2017-5-2 11:28:52

python的二维数组定义与操作

需要在程序中使用二维数组,网上找到一种这样的用法:
?
1
2
3
4
5
6
#创建一个宽度为3,高度为4的数组
#[,
#,
#,
#]
myList=[*3]*4



但是当操作myList = 1时,发现整个第二列都被赋值,变成
[,
,
,
]
为什么...一时搞不懂,后面翻阅The Python Standard Library找到答案
list * n—>nshallow copiesof list concatenated, n个list的浅拷贝的连接
例:
?
1
2
3
4
5
6
>>>lists =[[]]*3
>>>lists
[[],[], []]
>>>lists.append(3)
>>>lists
[,,]



[[]]是一个含有一个空列表元素的列表,所以[[]]*3表示3个指向这个空列表元素的引用,修改任何
一个元素都会改变整个列表:
所以需要用另外一种方式进行创建多维数组,以免浅拷贝:
?
1
2
3
4
5
6
>>>lists =[[]foriinrange(3)]
>>>lists.append(3)
>>>lists.append(5)
>>>lists.append(7)
>>>lists
[,,]



之前的二维数组创建方式为:
?
1
myList=[(*3)foriinrange(4)]

页: [1]
查看完整版本: python的二维数组定义与操作