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中的list列表及其切片和迭代操作
Mar 13 Python
Python守护进程和脚本单例运行详解
Jan 06 Python
Python实现的堆排序算法原理与用法实例分析
Nov 22 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
Python机器学习算法之k均值聚类(k-means)
Feb 23 Python
Python 函数基础知识汇总
Mar 09 Python
Python3.6日志Logging模块简单用法示例
Jun 14 Python
Python实现繁体中文与简体中文相互转换的方法示例
Dec 18 Python
几行Python代码爬取3000+上市公司的信息
Jan 24 Python
2019 Python最新面试题及答案16道题
Apr 11 Python
基于python 凸包问题的解决
Apr 16 Python
Django 实现jwt认证的示例
Apr 30 Python
Python超简单容易上手的画图工具库推荐
python爬虫请求库httpx和parsel解析库的使用测评
May 10 #Python
Python 中数组和数字相乘时的注意事项说明
May 10 #Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
You might like
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
JS 自动安装exe程序
2008/11/30 Javascript
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
JS获取几种URL地址的方法小结
2014/02/26 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
js实现的早期滑动门菜单效果代码
2015/08/27 Javascript
js中遍历Map对象的简单实例
2016/08/08 Javascript
详解AngularJS中的表单验证(推荐)
2016/11/17 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
微信小程序 支付简单实例及注意事项
2017/01/06 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
vue弹窗组件使用方法
2018/04/28 Javascript
深入理解Vue 组件之间传值
2018/08/16 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
vue项目打包后怎样优雅的解决跨域
2019/05/26 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
解决vue的过渡动画无法正常实现问题
2019/10/31 Javascript
[38:27]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第二场 11.26
2020/11/30 DOTA
python文件操作整理汇总
2014/10/21 Python
python中函数默认值使用注意点详解
2016/06/01 Python
Python入门_浅谈字符串的分片与索引、字符串的方法
2017/05/16 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
Django框架表单操作实例分析
2019/11/04 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
素质拓展感言
2014/01/29 职场文书
学雷锋活动总结报告
2014/06/26 职场文书
《周恩来的四个昼夜》观后思想汇报范文两篇
2014/09/10 职场文书
小班上学期个人总结
2015/02/12 职场文书
2015年团委副书记工作总结
2015/07/23 职场文书
Android中View.post和Handler.post的关系
2022/06/05 Java/Android