python 创建二维数组

myList = [([0] * 3) for i in range(4)]

myList[0][1] = 1
myList[1].append(2)
print myList

/usr/bin/python /Users/li/PycharmProjects/Nowcoder_Practice/tmp.py
[[0, 1, 0], [0, 0, 0, 2], [0, 0, 0], [0, 0, 0]]

Process finished with exit code 0

myList = [[0]*3]*4
myList[0][1] = 1
print myList
为什么? 
答案:list * n—>n shallow copies of list concatenated, n个list的浅拷贝的连接

思路一:利用切片操作和工厂方法list方法拷贝或使用copy模块中的copy()函数就叫浅拷贝,只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。

思路二:利用copy中的deepcopy方法进行拷贝就叫做深拷贝,外围和内部元素都进行了拷贝对象本身,而不是引用。

posted @ 2016-09-23 09:29  赭山东路  阅读(4864)  评论(0编辑  收藏  举报