我的编程空间,编程开发者的网络收藏夹
学习永远不晚

深入理解Python中的*重复运算符

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

深入理解Python中的*重复运算符

在python中有个特殊的符号“*”,可以用做数值运算的乘法算子,也是用作对象的重复算子,但在作为重复算子使用时一定要注意

注意的是:*重复出来的各对象具有同一个id,也就是指向在内存中同一块地址,在对各个对象进行操作是一定要注意。

举例来说:


>>> alist = [range(3)]*4
>>> alist
[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]

上面初始化一个二层列表用来模拟矩阵,该矩阵式4X3的,为描述方便,这里记矩阵为A。

现在我想给A11赋值为1,用下面的代码:


alist[0][0]=1

那我们想要的结果应该是:


[[1, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]

可是很不幸,我们得到的是:


[[1, 1, 2], [1, 1, 2], [1, 1, 2], [1, 1, 2]]

这是怎么回事呢,为什么给A21赋值,其他的Ai1为什么都跟着变了呢?

原因是这样的:

文章开始的时候我们已经说过了,*重复出来的各对象具有同一个id,也就是指向在内存中同一块地址,在对各个对象进行操作是一定要注意。

我们再初始化的时候用了重复算子"*",这个操作符在对对象进行重复操作时,会将重复的所有对象都指向同一块内存地址,所有当你改变其中的一个值时,其他的值自然也会更新,用python的话进行解释就是下面的命令及输出:


>>> id(alist[0])
18858192
>>> id(alist[1])
18858192
>>> id(alist[2])
18858192
>>> id(alist[3])
18858192
>>>

看到了吧,id都是一样滴,也就是说这4个list是同一个“list”。

既然这样那我们想要模拟一个矩阵怎么办呢,除了有专门的numpy包之外,你当然可以给上层list逐个的append新的list,例如:


>>> blist=[]
>>> for i in range(4):
  blist.append([j for j in range(3)])
>>> blist
[[0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]

这样,我们再试试上面的赋值操作:


>>> blist[0][0]=1
>>> blist
[[1, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]]
>>>

总结

以上就是本文关于深入理解Python中的*重复运算符的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:13个最常用的Python深度学习库介绍、python探索之BaseHTTPServer-实现Web服务器介绍等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

深入理解Python中的*重复运算符

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

深入理解Python中的*重复运算符

在python中有个特殊的符号“*”,可以用做数值运算的乘法算子,也是用作对象的重复算子,但在作为重复算子使用时一定要注意注意的是:*重复出来的各对象具有同一个id,也就是指向在内存中同一块地址,在对各个对象进行操作是一定要注意。举例来说:
2022-06-05

深入理解Golang中的除法运算符

深入理解Golang中的除法运算符在Golang中,除法运算符/是常见的数学运算符之一,用于计算两个数的商。但在实际编程中,对于除法运算符的使用可能会涉及到一些特殊情况和注意事项。本文将深入探讨Golang中的除法运算符,包括整数除法、浮
深入理解Golang中的除法运算符
2024-03-13

深入理解java中的异或运算符

Java中的位运算符中有一个叫做异或的运算符,符号为(^)或者 Xor异或8个字总结 相同出0 不同出1int a=1;int b=1;System.out.println(a^b);这里则输出 0int a=12;int b=0;System.out.pri
深入理解java中的异或运算符
2016-04-08

深入理解Python运算符:位移运算符、逻辑运算符和运算符优先级的实践手册

进阶Python运算符的应用:位移运算符、逻辑运算符、运算符优先级的实践指南Python是一门广泛应用于各个领域的高级编程语言,而掌握其中的运算符的使用是非常重要的。除了基本的算术运算符,Python还提供了许多其他类型的运算符,包括位移
深入理解Python运算符:位移运算符、逻辑运算符和运算符优先级的实践手册
2024-01-20

Python运算符探秘:深入解析赋值运算符、身份运算符、成员运算符

掌握Python运算符的奥秘:赋值运算符、身份运算符、成员运算符详解在Python编程中,运算符是非常重要的概念。除了常见的算术运算符和逻辑运算符外,还有一些特殊的运算符需要我们掌握。本文将详细介绍三种特殊的运算符:赋值运算符、身份运算符
Python运算符探秘:深入解析赋值运算符、身份运算符、成员运算符
2024-01-20

深入解析Python运算符:比较运算符、逻辑运算符、位运算符的用途和含义

Python运算符解析:比较运算符、逻辑运算符、位运算符的用法和意义一、比较运算符比较运算符用于比较两个值之间的关系,并返回一个布尔值(True或False)。下面是常见的比较运算符:等于(==): 判断两个值是否相等,如果相等则返回Tr
深入解析Python运算符:比较运算符、逻辑运算符、位运算符的用途和含义
2024-01-20

深入解析Python中的变量和赋值运算符

Python 变量类型 变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。
2022-06-04

PHP 中相等运算符 == 的深入详解

php 的相等运算符(==)采用松散比较,在比较值时不考虑数据类型。具体来说,它:允许整数和字符串相等。认为 nan 仅等于自身。认为 inf 和 -inf 仅等于自身或彼此。将 null 仅视为等于自身。PHP 中相等运算符(==)的深入
PHP 中相等运算符 == 的深入详解
2024-04-09

深入解析Go语言中%运算符的应用

Go语言中%运算符的用途详解,需要具体代码示例引言:在Go语言中,%运算符是一个常用的运算符之一。它的作用是求取两个数相除的余数。本文将详细讨论%运算符的用途,并给出一些具体的代码示例。一、%运算符的基本用法%运算符可以应用于整数类型的
深入解析Go语言中%运算符的应用
2024-01-18

深入剖析Python运算符:破解代码谜团

Python运算符是编程语言的核心,在代码中起着至关重要的作用。本文深入剖析Python运算符,包括算术运算符、比较运算符、逻辑运算符和赋值运算符,帮助开发人员破解代码谜团,编写高效且易于理解的代码。
深入剖析Python运算符:破解代码谜团
2024-03-09

PHP 相等性比较:深入理解 == 运算符的运作机制

php 中的相等性比较涉及 == 运算符。它有两种类型:严格比较 (===) 和非严格比较 (==)。后者可能产生意外结果,因为不同类型的变量可以被转换为相同类型后再进行比较。要确保值相等且类型相同,应使用严格比较。PHP 相等性比较:深入
PHP 相等性比较:深入理解 == 运算符的运作机制
2024-04-09

理解C语言中+=运算符的重要性

+= 运算符的重要性:+= 运算符在 c 语言中用于将一个变量的值与一个表达式相加并存储到该变量中,它可以简化代码并提高可读性。它省略了使用多个赋值语句进行累加的需要,使代码更简洁易懂。理解 C 语言中 += 运算符的重要性在 C 语言中
理解C语言中+=运算符的重要性
2024-04-04

深入解析Go语言的运算符用法

Go语言中运算符的高级用法解析Go语言作为一门现代化的编程语言,提供了丰富的运算符供开发者使用。除了常规的算术运算符和逻辑运算符外,Go语言还提供了一些高级的运算符,可以帮助开发者更加高效地进行编程。本文将对这些高级运算符进行解析,并给出相
深入解析Go语言的运算符用法
2024-01-18

解决Python运算符重载的问题

python进行有理数运算时,希望用运算符(+ - * /)描述计算过程。 只是用来写出更加自然的计算表达式。为此,python为所有算数运算符规定了特殊方法名。其中所有特殊的名字都以两个下划线开始,并以两个下划线结束,即: 当在Pytho
2022-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录