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 动态获取当前运行的类名和函数名的方法
Apr 15 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
Jun 29 Python
Python操作SQLite数据库的方法详解
Jun 16 Python
Python 内置函数memoryview(obj)的具体用法
Nov 23 Python
详解多线程Django程序耗尽数据库连接的问题
Oct 08 Python
对numpy中向量式三目运算符详解
Oct 31 Python
分析经典Python开发工程师面试题
Apr 08 Python
Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法实例分析
Dec 26 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
Jul 01 Python
Python如何输出警告信息
Jul 30 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
Nov 13 Python
python 爬取京东指定商品评论并进行情感分析
May 27 Python
Python超简单容易上手的画图工具库推荐
python爬虫请求库httpx和parsel解析库的使用测评
May 10 #Python
Python 中数组和数字相乘时的注意事项说明
May 10 #Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
You might like
php获取mysql数据库中的所有表名的代码
2011/04/23 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
destoon切换城市后实现logo旁边显示地区名称的方法
2014/08/21 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
为数据添加append,remove功能
2006/10/03 Javascript
javascript中的作用域scope介绍
2010/12/28 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
Javascript中查找不以XX字符结尾的单词示例代码
2013/10/15 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
jscript读写二进制文件的方法
2015/04/22 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
AngularJS基础 ng-if 指令用法
2016/08/01 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
详解axios在node.js中的post使用
2017/04/27 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
JavaScript实现三级联动菜单效果
2017/08/16 Javascript
vue实现的仿淘宝购物车功能详解
2019/01/27 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
通过mod_python配置运行在Apache上的Django框架
2015/07/22 Python
python TKinter获取文本框内容的方法
2018/10/11 Python
python自动化生成IOS的图标
2018/11/13 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
numpy.where() 用法详解
2019/05/27 Python
pandas-resample按时间聚合实例
2019/12/27 Python
关于matplotlib-legend 位置属性 loc 使用说明
2020/05/16 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
AJAX检测用户名是否存在的方法
2021/03/24 Javascript
工业设计专业推荐信
2013/10/29 职场文书
房地产开盘策划方案
2014/02/10 职场文书
社会实践评语
2014/04/28 职场文书
浅谈redis整数集为什么不能降级
2021/07/25 Redis