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开发之thread实现布朗运动的方法
Nov 11 Python
PyQt5每天必学之日历控件QCalendarWidget
Apr 19 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
Jul 13 Python
Python正则表达式和元字符详解
Nov 29 Python
python按照多个条件排序的方法
Feb 08 Python
浅谈Pandas Series 和 Numpy array中的相同点
Jun 28 Python
Python对Tornado请求与响应的数据处理
Feb 12 Python
python同时遍历两个list用法说明
May 02 Python
使用Python通过oBIX协议访问Niagara数据的示例
Dec 04 Python
python 可视化库PyG2Plot的使用
Jan 21 Python
TensorFlow2.0使用keras训练模型的实现
Feb 20 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 Python
Python超简单容易上手的画图工具库推荐
python爬虫请求库httpx和parsel解析库的使用测评
May 10 #Python
Python 中数组和数字相乘时的注意事项说明
May 10 #Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
You might like
PHP分页显示制作详细讲解
2006/10/09 PHP
PHP 递归效率分析
2009/11/24 PHP
PHP 缓存实现代码及详细注释
2010/05/16 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
php实现以只读方式打开文件的方法
2015/03/16 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
PHP中单例模式的使用场景与使用方法讲解
2019/03/18 PHP
js 字符串操作函数
2009/07/25 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
查询json的数据结构的8种方式简介
2014/03/10 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
微信{"errcode":48001,"errmsg":"api unauthorized, hints: [ req_id: 1QoCla0699ns81 ]"}
2018/10/12 Javascript
一秒学会微信小程序制作table表格
2019/02/14 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 大神专访第二弹!
2014/05/20 DOTA
Python Web编程之WSGI协议简介
2018/07/18 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
python write无法写入文件的解决方法
2019/01/23 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
Python3离线安装Requests模块问题
2019/10/13 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
CSS3字体效果的设置方法小结
2016/06/13 HTML / CSS
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
养殖人员的创业计划书范文
2013/12/26 职场文书
学校办公室主任职责
2013/12/27 职场文书
25岁生日感言
2014/01/13 职场文书
车间机修工岗位职责
2014/02/28 职场文书
报表员工作失误检讨书范文
2014/09/19 职场文书
病危通知单
2015/04/17 职场文书
2015年度女工工作总结
2015/10/22 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP