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数据可视化之matplotlib.pyplot绘图的基本参数详解

    2022-06-10 12:19:48
  • python中的zip模块

    2023-09-13 07:49:56
  • pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)

    2022-04-06 05:10:06
  • python的构建工具setup.py的方法使用示例

    2022-11-02 12:31:31
  • 统一的品牌设计

    2008-08-07 12:53:00
  • Python编程之微信推送模板消息功能示例

    2022-11-15 03:45:04
  • 浅析Python 中整型对象存储的位置

    2021-10-06 13:40:20
  • python asyncio 协程库的使用

    2022-09-13 13:28:16
  • 详解Python中的数据精度问题

    2022-08-17 13:36:22
  • 通过 Django Pagination 实现简单分页功能

    2021-03-15 15:53:03
  • AJAX简单应用实例-弹出层

    2011-04-14 10:55:00
  • 基于matplotlib中ion()和ioff()的使用详解

    2021-11-23 17:54:27
  • 在Python中实现字典反转案例

    2022-12-17 02:05:46
  • JavaScript模板解析演示实例

    2009-10-19 23:16:00
  • 使用Python爬虫爬取小红书完完整整的全过程

    2022-03-23 05:12:44
  • Django vue前后端分离整合过程解析

    2022-04-07 21:01:04
  • python 将字符串转换成字典dict

    2023-11-27 17:08:33
  • Python简单获取自身外网IP的方法

    2023-12-26 03:44:31
  • 如何在ADO服务器端利用好缓存技术?

    2010-06-17 12:49:00
  • Python numpy实现二维数组和一维数组拼接的方法

    2022-02-24 09:40:53
  • asp之家 网络编程 m.aspxhome.com