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网络编程学习笔记(九):数据库客户端 DB-API
Jun 09 Python
Python读写Excel文件方法介绍
Nov 22 Python
简单介绍Python中的filter和lambda函数的使用
Apr 07 Python
关于Python中异常(Exception)的汇总
Jan 18 Python
Python中一般处理中文的几种方法
Mar 06 Python
简单了解python关系(比较)运算符
Jul 08 Python
Python数据分析模块pandas用法详解
Sep 04 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
Oct 14 Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 Python
Python 实现向word(docx)中输出
Feb 13 Python
Python生成pdf目录书签的实例方法
Oct 29 Python
python实现双向链表原理
May 25 Python
Python超简单容易上手的画图工具库推荐
python爬虫请求库httpx和parsel解析库的使用测评
May 10 #Python
Python 中数组和数字相乘时的注意事项说明
May 10 #Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
You might like
PHP 中的一些经验积累
2006/10/09 PHP
Python中使用django form表单验证的方法
2017/01/16 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
2019/09/30 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
2015/08/05 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
JavaScript数组复制详解
2017/02/02 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
对angular4子路由&辅助路由详解
2018/10/09 Javascript
详解基于webpack&gettext的前端多语言方案
2019/01/29 Javascript
js module大战
2019/04/19 Javascript
layer.open提交子页面的form和layedit文本编辑内容的方法
2019/09/27 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
Vue 样式切换及三元判断样式关联操作
2020/08/09 Javascript
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
MySQL最常见的操作语句小结
2015/05/07 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
使用Python读取安卓手机的屏幕分辨率方法
2018/03/31 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
2020/07/02 Python
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
EntityManager都有哪些方法
2013/11/01 面试题
机电一体化专业推荐信
2013/12/03 职场文书
食品安全宣传标语
2014/06/07 职场文书
教师年度个人总结
2015/02/11 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
入党积极分子党支部意见
2015/06/02 职场文书
红楼梦读书笔记
2015/06/25 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python