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实现二分查找与bisect模块详解
Jan 13 Python
Python编程生成随机用户名及密码的方法示例
May 05 Python
Python实现的排列组合计算操作示例
Oct 13 Python
Python基于matplotlib实现绘制三维图形功能示例
Jan 18 Python
Django 数据库同步操作技巧详解
Jul 19 Python
安装PyInstaller失败问题解决
Dec 14 Python
对Tensorflow中tensorboard日志的生成与显示详解
Feb 04 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
IntelliJ 中配置 Anaconda的过程图解
Jun 01 Python
pytorch随机采样操作SubsetRandomSampler()
Jul 07 Python
Python Http请求json解析库用法解析
Nov 28 Python
python制作抽奖程序代码详解
Jan 15 Python
Python超简单容易上手的画图工具库推荐
python爬虫请求库httpx和parsel解析库的使用测评
May 10 #Python
Python 中数组和数字相乘时的注意事项说明
May 10 #Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
You might like
php简单的留言板与回复功能具体实现
2014/02/19 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
2016/03/21 PHP
php基于CodeIgniter实现图片上传、剪切功能
2016/05/14 PHP
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
JS组件Bootstrap Table表格行拖拽效果实现代码
2020/08/27 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
js实现3D旋转效果
2020/08/18 Javascript
[06:36]吞吞映像top1
2014/06/20 DOTA
[03:06]3分钟带你回顾DOTA2完美盛典&完美大师赛
2017/12/06 DOTA
Python 代码性能优化技巧分享
2012/08/07 Python
python执行外部程序的常用方法小结
2015/03/21 Python
详解Python中for循环的使用
2015/04/14 Python
python和bash统计CPU利用率的方法
2015/07/10 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
2019/08/22 Python
详解用Python爬虫获取百度企业信用中企业基本信息
2020/07/02 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
html5使用Canvas绘图的使用方法
2017/11/21 HTML / CSS
美国花园雕像和家居装饰网上商店:Design Toscano
2019/03/09 全球购物
某IT外企面试题-二分法求方程!看看大家的C++功底
2015/07/04 面试题
解释一下钝化(Swap out)
2016/12/26 面试题
《在山的那边》教学反思
2014/02/23 职场文书
运动会加油口号
2014/06/07 职场文书
物业品质提升方案
2014/06/08 职场文书
有关环保的标语
2014/06/13 职场文书
个人授权委托书范本
2014/09/14 职场文书
警察群众路线对照检查材料思想汇报
2014/10/01 职场文书
2014年党支部工作总结
2014/11/13 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
英语投诉信范文
2015/07/03 职场文书
安全责任协议书范本
2016/03/23 职场文书
Python Pygame实战之塔防游戏的实现
2022/03/17 Python
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js