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的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 Python
Python学习笔记之if语句的使用示例
Oct 23 Python
Selenium控制浏览器常见操作示例
Aug 13 Python
在python中pandas读文件,有中文字符的方法
Dec 12 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
python3实现的zip格式压缩文件夹操作示例
Aug 17 Python
Python使用get_text()方法从大段html中提取文本的实例
Aug 27 Python
python如何基于redis实现ip代理池
Jan 17 Python
使用OpenCV获取图片连通域数量,并用不同颜色标记函
Jun 04 Python
Django mysqlclient安装和使用详解
Sep 17 Python
python实现启动一个外部程序,并且不阻塞当前进程
Dec 05 Python
django使用多个数据库的方法实例
Mar 04 Python
Python超简单容易上手的画图工具库推荐
python爬虫请求库httpx和parsel解析库的使用测评
May 10 #Python
Python 中数组和数字相乘时的注意事项说明
May 10 #Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
You might like
如何给phpadmin一个保护
2006/10/09 PHP
php&java(二)
2006/10/09 PHP
php 全局变量范围分析
2009/08/07 PHP
Eclipse中php插件安装及Xdebug配置的使用详解
2013/04/25 PHP
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
使用URL传输SESSION信息
2015/07/14 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
js下用eval生成JSON对象
2010/09/17 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
微信小程序 数组中的push与concat的区别
2017/01/05 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
5分钟打造简易高效的webpack常用配置
2017/07/04 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
2018/08/07 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
Python Mysql自动备份脚本
2008/07/14 Python
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
使用python绘制温度变化雷达图
2019/10/18 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
怎样有效的进行自我评价
2013/10/06 职场文书
简单英文演讲稿
2014/01/01 职场文书
社会保险接收函
2014/01/12 职场文书
学校督导评估方案
2014/06/10 职场文书
新员工辞职信范文
2015/05/12 职场文书
大学生暑期实践报告之企业经营管理
2019/08/08 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android