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删除java文件头上版权信息的方法
Jul 31 Python
Python实现批量下载图片的方法
Jul 08 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
Jul 01 Python
python3设计模式之简单工厂模式
Oct 17 Python
用python处理MS Word的实例讲解
May 08 Python
python之线程通过信号pyqtSignal刷新ui的方法
Jan 11 Python
python可视化篇之流式数据监控的实现
Aug 07 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 Python
Python如何将字符串转换为日期
Jul 31 Python
详解Scrapy Redis入门实战
Nov 18 Python
Python爬虫之Selenium设置元素等待的方法
Dec 04 Python
Anaconda配置各版本Pytorch的实现
Aug 07 Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
利用Selenium添加cookie实现自动登录的示例代码(fofa)
Python基础之教你怎么在M1系统上使用pandas
python文件目录操作之os模块
May 08 #Python
You might like
PHP与已存在的Java应用程序集成
2006/10/09 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
php下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
2019/11/19 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
JavaScript和JQuery实用代码片段(一)
2010/04/07 Javascript
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
javascript中 try catch用法
2015/08/16 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
jQuery实现Select左右复制移动内容
2016/08/05 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
2016/11/21 Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
2017/02/22 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
vue 权限认证token的实现方法
2018/07/17 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
利用es6 new.target来对模拟抽象类的方法
2019/05/10 Javascript
layui 弹出层值回传解决方式
2019/11/14 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
Python模拟三级菜单效果
2017/09/11 Python
Python断言assert的用法代码解析
2018/02/03 Python
用pycharm开发django项目示例代码
2019/06/13 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
Charlotte Tilbury英国官网:英国彩妆品牌
2017/05/26 全球购物
Solid & Striped官网:美国泳装品牌
2019/06/19 全球购物
小学生综合素质评语
2014/04/23 职场文书
幼儿园中班教学反思
2016/03/03 职场文书
幼儿园2016年感恩节活动总结
2016/04/01 职场文书
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers