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中使用PIPE操作Linux管道
Feb 04 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
python3利用ctypes传入一个字符串类型的列表方法
Feb 12 Python
Python利用pandas处理Excel数据的应用详解
Jun 18 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
Python如何基于selenium实现自动登录博客园
Dec 16 Python
Python 2种方法求某个范围内的所有素数(质数)
Jan 31 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
python isinstance函数用法详解
Feb 13 Python
Python中求对数方法总结
Mar 10 Python
python 批量下载bilibili视频的gui程序
Nov 20 Python
class类在python中获取金融数据的实例方法
Dec 10 Python
Python超简单容易上手的画图工具库推荐
python爬虫请求库httpx和parsel解析库的使用测评
May 10 #Python
Python 中数组和数字相乘时的注意事项说明
May 10 #Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
You might like
php whois查询API制作方法
2011/06/23 PHP
具有时效性的php加密解密函数代码
2013/06/19 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
js 获取、清空input type="file"的值(示例代码)
2013/12/24 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
在JavaScript的正则表达式中使用exec()方法
2015/06/16 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
解读python logging模块的使用方法
2018/04/17 Python
Python使用scrapy爬取阳光热线问政平台过程解析
2019/08/14 Python
python循环输出三角形图案的例子
2019/11/22 Python
使用 Python 清理收藏夹里已失效的网站
2019/12/03 Python
python中线程和进程有何区别
2020/06/17 Python
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
函数只定义了一次, 调用了一次, 但编译器提示非法重定义了-什么问题?
2014/10/03 面试题
医院护士求职自荐信格式
2013/09/21 职场文书
高中语文教学反思
2014/01/16 职场文书
中国梦主题教育活动总结
2014/05/05 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
学校实习推荐信
2015/03/27 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
利用python做表格数据处理
2021/04/13 Python
浅谈Redis中的RDB快照
2021/06/29 Redis