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随机生成指定长度密码的方法
Apr 04 Python
python实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
Jul 02 Python
Python连接DB2数据库
Aug 27 Python
pyhton列表转换为数组的实例
Apr 04 Python
PyCharm设置护眼背景色的方法
Oct 29 Python
Django model反向关联名称的方法
Dec 15 Python
Python Web程序搭建简单的Web服务器
Jul 31 Python
使用python切片实现二维数组复制示例
Nov 26 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
Python库skimage绘制二值图像代码实例
Apr 10 Python
Python3利用openpyxl读写Excel文件的方法实例
Feb 03 Python
Python超简单容易上手的画图工具库推荐
python爬虫请求库httpx和parsel解析库的使用测评
May 10 #Python
Python 中数组和数字相乘时的注意事项说明
May 10 #Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
You might like
如何选购合适的收音机
2021/03/01 无线电
PHP在线生成二维码代码(google api)
2013/06/03 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
php7函数,声明,返回值等新特性介绍
2018/05/25 PHP
比较详细的javascript对象的property和prototype是什么一种关系
2007/08/06 Javascript
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
jQuery实现html表格动态添加新行的方法
2015/05/28 Javascript
在JavaScript中使用对数Math.log()方法的教程
2015/06/15 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
详述JavaScript实现继承的几种方式(推荐)
2016/03/22 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
javascript基于定时器实现进度条功能实例
2017/10/13 Javascript
ES6学习笔记之map、set与数组、对象的对比
2018/03/01 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
Python的Django框架中从url中捕捉文本的方法
2015/07/20 Python
python算法题 链表反转详解
2019/07/02 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
实例讲解CSS3中Transform的perspective属性的用法
2016/04/22 HTML / CSS
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
IMPORT的选项IGNORE有什么作用?缺省是什么设置?
2015/09/17 面试题
保护环境倡议书
2014/04/14 职场文书
主题教育活动总结
2014/05/05 职场文书
公司晚会策划方案
2014/05/17 职场文书
施工工地安全标语
2014/06/07 职场文书
公务员个人考察材料
2014/12/23 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python
如何用python清洗文件中的数据
2021/06/18 Python