Python 中数组和数字相乘时的注意事项说明


Posted in Python onMay 10, 2021

注意事项

[object] * n 的时候并没有复制n-1个object,而是增加了n-1个对object的引用。

例子说明

目标:生成一个10*10且所有值都是0的二维数组

方法一:

[ [0] * 10] * 10

方法二:

[ [0 for _ in range(10)] for _ in range(10)]

本以为两种方法得到的结果是一样,但是在使用时发现有些不一样。如下面的代码所示。

当仅仅更改a[2][2]的值的时候,a[k][2] (k取0到9)全部被更改成了4。

其实这是因为[object] * n 的时候并没有复制n-1个object,而是增加了n-1个引用。

a = [ [0] * 10] * 10 
b = [ [0 for _ in range(10)] for _ in range(10)] 
a[2][2] = 4 
b[2][2] = 4 
for i in a: 
    print(i) 
print("--------") 
for i in b: 
    print(i) 
 
[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]
 
--------
 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 4, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
 
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

补充:python 中numpy数组与数组使用*相乘的效果

输入:

import numpy as np
b = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
a = np.array([150,270,150,270])
b2 = b * a
print(b)
print(a)
print(b2)

输出:

[[ 1 2 3 4]

[ 5 6 7 8]

[ 9 10 11 12]]

[150 270 150 270]

[[ 150 540 450 1080]

[ 750 1620 1050 2160]

[1350 2700 1650 3240]]

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

Python 相关文章推荐
几个提升Python运行效率的方法之间的对比
Apr 03 Python
python基础教程之五种数据类型详解
Jan 12 Python
使用pyecharts在jupyter notebook上绘图
Apr 23 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
python自动重试第三方包retrying模块的方法
Apr 24 Python
python正则-re的用法详解
Jul 28 Python
Python的in,is和id函数代码实例
Apr 18 Python
Numpy一维线性插值函数的用法
Apr 22 Python
python的pip有什么用
Jun 17 Python
Python自动化爬取天眼查数据的实现
Jun 15 Python
python获取带有返回值的多线程
May 02 Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
利用Selenium添加cookie实现自动登录的示例代码(fofa)
Python基础之教你怎么在M1系统上使用pandas
python文件目录操作之os模块
May 08 #Python
You might like
PHP 网页过期时间的控制代码
2009/06/29 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
使用jQuery和PHP实现类似360功能开关效果
2014/02/12 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
JavaScript检测实例属性, 原型属性
2015/02/04 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
js实现小窗口拖拽效果
2016/12/03 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
Vue.extend实现挂载到实例上的方法
2019/05/01 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
js获取本日、本周、本月的时间代码
2020/02/01 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
[29:10]Ti4 冒泡赛第二天 NEWBEE vs Titan 3
2014/07/15 DOTA
Python Queue模块详解
2014/11/30 Python
python对象及面向对象技术详解
2016/07/19 Python
Python三级菜单的实例
2017/09/13 Python
Python 占位符的使用方法详解
2019/07/10 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
python中线程和进程有何区别
2020/06/17 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
旅游管理实习自我鉴定
2013/09/29 职场文书
前台接待的工作职责
2013/11/21 职场文书
员工培训邀请函
2014/02/02 职场文书
母婴店促销方案
2014/03/05 职场文书
企业党员公开承诺书
2014/03/26 职场文书
出售房屋协议书范本
2014/10/06 职场文书
五年级下册复习计划
2015/01/19 职场文书
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers