python 中[0]*2与0*2的区别说明


Posted in Python onMay 10, 2021

程序用例:

a=[[1,2],[4,5]]
b=[0]*len(a)
d=0*len(a)
print("len(a)=",len(a))
print("b=",b)
print("d=",d)
print(2*[1,2])
print([1,2]*2)

输出如下:

len(a)= 2

b= [0, 0]

d= 0

[1, 2, 1, 2]

[1, 2, 1, 2]

可以看出在矩阵后面程一个数等于将其复制几次。

补充:创建二维数组 以及 python中[0 ]* n与[0 for _ in range(n)]的区别与联系

一、浅拷贝于深拷贝

直接赋值:其实就是对象的引用(别名)。

浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。

深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

二、区别

[ 0 ] * n 是浅拷贝, 也就是把一个列表重复了 n 次,是 = 号复制(注意不是浅拷贝,= 与浅拷贝的list id是不同的);[[0]*n]*m 这种方式是直接将 [0]*n 复制了m遍

[0 for _ in range(n)] 才是创建,深拷贝

n = 4
dp1 = [0] * n
dp2 = [0 for _ in range(n) ]
print('dp1:',dp1)
print('dp2:',dp2)

这两者的效果是一样的

dp1: [0, 0, 0, 0]

dp2: [0, 0, 0, 0]

二维数组,创建一个3*4的矩阵,元素全为0,修改(0,2)个元素的值为3,则提供三种方法如下:

m,n = 3,4
dp1 = [[0] * n ] * m
dp2 = [[0 for _ in range(n) ] for _ in range(m)]
dp3 = [[0] * n for _ in range(m)]
dp1[0][2] = 3
dp2[0][2] = 3
dp3[0][2] = 3
print('dp1:',dp1)
print('dp2:',dp2)
print('dp2:',dp3)

结果为:

dp1: [[0, 0, 3, 0], [0, 0, 3, 0], [0, 0, 3, 0]]

dp2: [[0, 0, 3, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

dp2: [[0, 0, 3, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

第一种方法不行,每一行的改变都会改变其他行

第二种、第三种方法均可

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。如有错误或未考虑完全的地方,望不吝赐教。

Python 相关文章推荐
Python translator使用实例
Sep 06 Python
在Python中关于中文编码问题的处理建议
Apr 08 Python
使用70行Python代码实现一个递归下降解析器的教程
Apr 17 Python
探究Python多进程编程下线程之间变量的共享问题
May 05 Python
利用python求相邻数的方法示例
Aug 18 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
Jun 28 Python
Python操作远程服务器 paramiko模块详细介绍
Aug 07 Python
python groupby 函数 as_index详解
Dec 16 Python
TensorFlow:将ckpt文件固化成pb文件教程
Feb 11 Python
python中关于数据类型的学习笔记
Jul 19 Python
python 实现弹球游戏的示例代码
Nov 17 Python
Python 批量下载阴阳师网站壁纸
May 19 Python
Python超简单容易上手的画图工具库推荐
python爬虫请求库httpx和parsel解析库的使用测评
May 10 #Python
Python 中数组和数字相乘时的注意事项说明
May 10 #Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
You might like
跟我学Laravel之安装Laravel
2014/10/15 PHP
PHP判断手机是IOS还是Android
2015/12/09 PHP
如何使用php等比例缩放图片
2016/10/12 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
php表单处理操作
2017/11/16 PHP
javascript 函数式编程
2007/08/16 Javascript
javascript function、指针及内置对象
2009/02/19 Javascript
passwordStrength 基于jquery的密码强度检测代码使用介绍
2011/10/08 Javascript
JS格式化数字金额用逗号隔开保留两位小数
2013/10/18 Javascript
jquery中的查找parents与closest方法之间的区别
2013/12/02 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
jQuery+CSS实现的网页二级下滑菜单效果
2015/08/25 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
python实现梯度法 python最速下降法
2020/03/24 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
如何开启linux的ssh服务
2015/02/14 面试题
个人简历自我鉴定
2013/10/11 职场文书
应届大学生的推荐信
2013/11/20 职场文书
有关打架的检讨书
2014/01/25 职场文书
工程材料采购方案
2014/05/18 职场文书
学校教研活动总结
2014/07/02 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python