python 中[0]*2与0*2的区别说明

作者:谁梦蓝天 时间:2021-11-01 07:46:17 

程序用例:


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]]

第一种方法不行,每一行的改变都会改变其他行

第二种、第三种方法均可

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

来源:https://blog.csdn.net/manqianfu9364/article/details/84987779

标签:python,[0],2,0,2
0
投稿

猜你喜欢

  • 详谈python http长连接客户端

    2023-07-30 22:37:01
  • MySQL中从库延迟状况排查的一则案例

    2024-01-21 01:32:53
  • 虚拟环境下搭建一个Django项目

    2023-06-15 12:30:39
  • 9种python web 程序的部署方式小结

    2021-04-14 10:39:44
  • Python学习笔记整理3之输入输出、python eval函数

    2021-07-19 04:15:58
  • python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例

    2022-09-27 13:07:54
  • vue中render函数和h函数以及jsx的使用方式

    2024-04-30 10:27:52
  • 浅谈Python flask框架

    2021-04-07 00:45:43
  • Bootstrap Paginator分页插件使用方法详解

    2023-09-05 23:08:42
  • Python简明讲解filter函数的用法

    2021-07-24 13:00:38
  • 精美漂亮的php分页类代码

    2023-11-22 08:28:09
  • Python接口自动化之浅析requests模块post请求

    2022-12-10 21:10:05
  • 提升Python运行速度的5个小技巧

    2021-07-28 20:25:24
  • laravel学习教程之关联模型

    2023-06-11 19:46:55
  • python绘制折线图和条形图的方法

    2023-05-06 11:28:24
  • 收集的ORACLE函数大全

    2010-07-16 12:58:00
  • python3.x zip用法小结

    2023-08-13 05:25:05
  • Django-migrate报错问题解决方案

    2021-11-05 13:30:16
  • WPF滑块控件(Slider)的自定义样式

    2022-01-19 20:05:02
  • Javascript实现的鼠标经过时播放声音

    2010-05-18 20:03:00
  • asp之家 网络编程 m.aspxhome.com