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实现全局变量的两个解决方法
Jul 03 Python
讲解Python中运算符使用时的优先级
May 14 Python
Python正则抓取新闻标题和链接的方法示例
Apr 24 Python
Scrapy的简单使用教程
Oct 24 Python
pandas的object对象转时间对象的方法
Apr 11 Python
python自动登录12306并自动点击验证码完成登录的实现源代码
Apr 25 Python
python使用if语句实现一个猜拳游戏详解
Aug 27 Python
Python 3.8正式发布重要新功能一览
Oct 17 Python
初学者学习Python好还是Java好
May 26 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
python 多线程死锁问题的解决方案
Aug 25 Python
Python中的变量与常量
Nov 11 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实现的四则运算表达式计算实现代码
2011/08/02 PHP
解析php中var_dump,var_export,print_r三个函数的区别
2013/06/21 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
Javascript 日期处理之时区问题
2009/10/08 Javascript
jquery 学习之一 对象访问
2010/11/23 Javascript
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
Javascript基础回顾之(一) 类型
2017/01/31 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
2017/05/02 Javascript
NodeJS 实现手机短信验证模块阿里大于功能
2017/06/19 NodeJs
JavaScript实现多态和继承的封装操作示例
2018/08/20 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
2019/08/26 Javascript
echarts.js 动态生成多个图表 使用vue封装组件操作
2020/07/19 Javascript
python 实现堆排序算法代码
2012/06/05 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
pycharm中选中一个单词替换所有重复单词的实现方法
2020/11/17 Python
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
2014年医学生毕业自我鉴定
2014/03/26 职场文书
会计师事务所实习证明
2014/11/16 职场文书
企业办公室主任岗位职责
2015/04/01 职场文书
《所见》教学反思
2016/02/23 职场文书
详解Mysql 函数调用优化
2021/04/07 MySQL