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基础教程之python消息摘要算法使用示例
Feb 10 Python
详解python string类型 bytes类型 bytearray类型
Dec 16 Python
Django处理文件上传File Uploads的实例
May 28 Python
python3.X 抓取火车票信息【修正版】
Jun 19 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
Pandas之ReIndex重新索引的实现
Jun 25 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
浅谈Python线程的同步互斥与死锁
Mar 22 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 Python
编写python程序的90条建议
Apr 14 Python
Python使用openpyxl模块处理Excel文件
Jun 05 Python
Python超简单容易上手的画图工具库推荐
python爬虫请求库httpx和parsel解析库的使用测评
May 10 #Python
Python 中数组和数字相乘时的注意事项说明
May 10 #Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
You might like
PHP数组与对象之间使用递归实现转换的方法
2015/06/24 PHP
PHP图像裁剪缩略裁切类源码及使用方法
2016/01/07 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
PHP使用curl_multi实现并发请求的方法示例
2018/04/29 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
2014/01/09 Javascript
JavaScript省市联动实现代码
2014/02/15 Javascript
Javascript验证Visa和MasterCard信用卡号的方法
2015/07/27 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
简单实现JavaScript图片切换效果
2016/11/28 Javascript
layui 设置table 行的高度方法
2018/08/17 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
2019/06/21 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
Python中单、双下划线的区别总结
2017/12/01 Python
Python线性方程组求解运算示例
2018/01/17 Python
linux下python使用sendmail发送邮件
2018/05/22 Python
pycharm安装和首次使用教程
2018/08/27 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Python tcp传输代码实例解析
2020/03/18 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
python IP地址转整数
2020/11/20 Python
python os.listdir()乱码解决方案
2021/01/31 Python
html5 自定义播放器核心代码
2013/12/20 HTML / CSS
幼儿园家长评语
2014/02/10 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
党的群众路线对照检查材料
2014/08/27 职场文书
门面房租房协议书
2014/12/01 职场文书
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android
深入解析MySQL索引数据结构
2021/10/16 MySQL
一起来学习Python的元组和列表
2022/03/13 Python
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android