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正则表达式修复网站文章字体不统一的解决方法
Feb 21 Python
Python基本数据类型详细介绍
Mar 11 Python
python微信跳一跳系列之棋子定位颜色识别
Feb 26 Python
python实现list由于numpy array的转换
Apr 04 Python
分享vim python缩进等一些配置
Jul 02 Python
python中协程实现TCP连接的实例分析
Oct 14 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
Pyinstaller打包.py生成.exe的方法和报错总结
Apr 02 Python
python按比例随机切分数据的实现
Jul 11 Python
Python greenlet和gevent使用代码示例解析
Apr 01 Python
Python基于wordcloud及jieba实现中国地图词云图
Jun 09 Python
Python Scrapy图片爬取原理及代码实例
Jun 12 Python
Python超简单容易上手的画图工具库推荐
python爬虫请求库httpx和parsel解析库的使用测评
May 10 #Python
Python 中数组和数字相乘时的注意事项说明
May 10 #Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
You might like
php 调试利器debug_print_backtrace()
2012/07/23 PHP
解析PHP中的正则表达式以及模式匹配
2013/06/19 PHP
使两个iframe的高度与内容自适应,且相等
2006/11/20 Javascript
javascript之dhDataGrid Ver2.0.0代码
2007/07/01 Javascript
如何调试异步加载页面里包含的js文件
2014/10/30 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
javascript 数据存储的常用函数总结
2017/06/01 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
vue父子组件间引用之$parent、$children
2020/05/20 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
八大排序算法的Python实现
2021/01/28 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
keras 权重保存和权重载入方式
2020/05/21 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
俄罗斯电子产品、计算机和家用电器购物网站:OLDI
2019/10/27 全球购物
博士生入学考试推荐信
2013/11/17 职场文书
师生聚会感言
2014/01/26 职场文书
销售人员职业生涯规划范文
2014/03/01 职场文书
中等生评语大全
2014/05/04 职场文书
产品售后服务承诺书
2014/05/21 职场文书
报效祖国演讲稿
2014/09/15 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
mybatis中sql语句CDATA标签的用法说明
2021/06/30 Java/Android