python的二维数组操作
发布日期:2022-03-03 10:44:11 浏览次数:1 分类:技术文章

本文共 679 字,大约阅读时间需要 2 分钟。

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


但是当操作myList[0][1] = 1时,发现整个第二列都被赋值,变成


#[[0,0,0],# [0,0,0],# [0,0,0],# [0,0,0]]myList = [[0] * 3] * 4


为什么...一时搞不懂,后面翻阅The Python Standard Library 找到答案

list * n—>n shallow copies of list concatenated, n个list的浅拷贝的连接

例:
   
>>> lists = [[]] * 3>>> lists[[], [], []]>>> lists[0].append(3)>>> lists[[3], [3], [3]]



[[]]是一个含有一个空列表元素的列表,所以[[]]*3表示3个指向这个空列表元素的引用,修改任何

一个元素都会改变整个列表:

所以需要用另外一种方式进行创建多维数组,以免浅拷贝:   
>>> lists = [[] for i in range(3)]>>> lists[0].append(3)>>> lists[1].append(5)>>> lists[2].append(7)>>> lists[[3], [5], [7]]

之前的二维数组创建方式为:   
myList = [([0] * 3) for i in range(4)]

转载地址:https://blog.csdn.net/yangjiegang8/article/details/51457588 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Git批量删除文件
下一篇:Windows 8 系统环境下,Python3默认编码错误,导致运行文件失败的解决方法。

发表评论

最新留言

很好
[***.36.149.39]2022年07月27日 05时03分08秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章