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列表与元组详解实例
Nov 01 Python
Python多进程同步Lock、Semaphore、Event实例
Nov 21 Python
python用装饰器自动注册Tornado路由详解
Feb 14 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
Nov 08 Python
使用Python快速搭建HTTP服务和文件共享服务的实例讲解
Jun 04 Python
使用Python操作FTP实现上传和下载的方法
Apr 01 Python
Python笔记之代理模式
Nov 20 Python
Python concurrent.futures模块使用实例
Dec 24 Python
Python使用py2neo操作图数据库neo4j的方法详解
Jan 13 Python
Django ValuesQuerySet转json方式
Mar 16 Python
使用Keras预训练模型ResNet50进行图像分类方式
May 23 Python
使用darknet框架的imagenet数据分类预训练操作
Jul 07 Python
python 实现的截屏工具
python实现的人脸识别打卡系统
Python词云的正确实现方法实例
python神经网络编程之手写数字识别
利用Selenium添加cookie实现自动登录的示例代码(fofa)
Python基础之教你怎么在M1系统上使用pandas
python文件目录操作之os模块
May 08 #Python
You might like
PHP网站提速三大“软”招
2006/10/09 PHP
zend framework多模块多布局配置
2011/02/26 PHP
php 代码优化之经典示例
2011/03/24 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
Jquery中显示隐藏的实现代码分析
2011/07/26 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
jQuery Validate表单验证插件的基本使用方法及功能拓展
2017/01/04 Javascript
Jquery中attr与prop的区别详解
2017/05/27 jQuery
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
2018/11/29 Javascript
vue-router源码之history类的浅析
2019/05/21 Javascript
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
如何实现小程序与小程序之间的跳转
2020/11/04 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
[41:05]Serenity vs Pain 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python实现爬虫下载美女图片
2015/07/14 Python
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
Python面向对象原理与基础语法详解
2020/01/02 Python
python tkinter实现下载进度条及抖音视频去水印原理
2021/02/07 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
国外软件测试工程师面试题
2016/12/09 面试题
民事上诉状范文
2015/05/22 职场文书
导游词之舟山普陀山
2019/11/06 职场文书
某某店铺的开业庆典主持词范本
2019/11/25 职场文书
python3 字符串str和bytes相互转换
2022/03/23 Python
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技