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自动安装pip
Apr 24 Python
python中字符串前面加r的作用
Jun 04 Python
用Python写冒泡排序代码
Apr 12 Python
利用python爬取软考试题之ip自动代理
Mar 28 Python
Django实现一对多表模型的跨表查询方法
Dec 18 Python
使用python实现简单五子棋游戏
Jun 18 Python
linux环境中没有网络怎么下载python
Jul 07 Python
Python中的list与tuple集合区别解析
Oct 12 Python
python3 字符串知识点学习笔记
Feb 08 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 Python
django学习之ajax post传参的2种格式实例
May 14 Python
Python 批量下载阴阳师网站壁纸
May 19 Python
Python超简单容易上手的画图工具库推荐
python爬虫请求库httpx和parsel解析库的使用测评
May 10 #Python
Python 中数组和数字相乘时的注意事项说明
May 10 #Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
You might like
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
解析func_num_args与func_get_args函数的使用
2013/06/24 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
按给定几率进行随机抽取的js代码
2010/12/28 Javascript
js获取html文件的思路及示例
2013/09/17 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
JS判断客户端是手机还是PC的2个代码
2014/04/12 Javascript
JavaScript监听和禁用浏览器回车事件实例
2015/01/31 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
js实现数组转换成json
2015/06/26 Javascript
Vue.js双向绑定操作技巧(初级入门)
2016/12/27 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
详解redux异步操作实践
2018/08/15 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
原生JS实现手动轮播图效果实例代码
2018/11/22 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
JS手写一个自定义Promise操作示例
2020/03/16 Javascript
python实现数通设备端口监控示例
2014/04/02 Python
Python实现多线程HTTP下载器示例
2017/02/11 Python
python3 requests中使用ip代理池随机生成ip的实例
2018/05/07 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
size?爱尔兰官方网站:英国伦敦的球鞋精品店
2019/03/31 全球购物
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
自我评价优秀范文分享
2013/11/30 职场文书
经典促销广告词大全
2014/03/19 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
python_tkinter事件类型详情
2022/03/20 Python