当前位置:首页 > 编程教程 > Python技术文章 > python中+=连用是什么意思

理解python中+=连用是什么意思

  • 发布时间:
  • 作者:码农之家
  • 点击:86

这篇文章主要知识点是关于python、+=、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python极客项目编程
  • 类型:Python编程大小:6.5 MB格式:PDF作者:Mahesh Venkitachalam
立即下载

python中+=连用是什么意思

对可变类型来说,我们可以在原地对变量进行修改,也就是说它的存储空间是可读可写的,例如 list;而对于不可变类型来说,它的存储空间则是只读的,无法对其进行修改,如果需要对不可变类型进行某些操作来得到新的结果,则需要重新开辟一份存储空间来存放这个新产生的结果。

 

python中+=连用是什么意思

对于可变类型:+=代表追加操作,即 in-place 操作,在原地把另一个对象的内容追加到对象中。

对于不可变类型:+=代表连接或求和操作,其操作的结果会产生一个新的对象。

>>> l = [1, 2, 3, 4, 5]
>>> id(l)
43142024
>>> l += [0]*5
>>> l[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
>>> id(l)
43142024

当用 += 时, “l” 前后是一个。

相关推荐:《python视频教程》

>>> t = (1, 2, 3, 4, 5)
>>> id(t)
45438232
>>> t += (0,)*5
>>> t(1, 2, 3, 4, 5, 0, 0, 0, 0, 0)
>>> id(t)
45674568

当我们把列表换成元组时,结果又发生了变化。

>>>s = "hello"
>>> id(s)
45794056
>>>s += "world"
>>> s'helloworld'
>>> id(s)
45495920

结果如同元组,“s” 在使用 += 拼接一个字符串后,被重新赋了值,已然不是之前的变量。反映在内存中就是,“s” 被另外开辟了一个存储空间来存放值。

以上就是python中+=连用是什么意思的详细内容,更多请关注码农之家其它相关文章!

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

python 相关电子书
学习笔记
网友NO.390105

Python中表达式x += y和x = x+y 的区别详解

前言 本文主要给大家介绍的是关于Python中表达式x += y和x = x+y 区别的相关内容,分享出来供大家参考学习,下面来看看详细的介绍: 直接看下面代码: x +=y In [66]: id(a)Out[66]: 4476839480In [67]: id(b)Out[67]: 4476839480In [68]: a = [1, 2, 3]In [69]: b = aIn [70]: id(a)Out[70]: 4477149984In [71]: id(b)Out[71]: 4477149984In [72]: a += [4, 5, 6]In [73]: aOut[73]: [1, 2, 3, 4, 5, 6]In [74]: bOut[74]: [1, 2, 3, 4, 5, 6]In [75]: id(a)Out[75]: 4477149984In [76]: id(b)Out[76]: 4477149984 x = x + y In [77]: a = [1, 2, 3]In [78]: b = aIn [79]: id(a)Out[79]: 4476686208In [80]: id(b)Out[80]: 4476686208In [81]: a = a + [4, 5, 6]In [82]: aOut[82]: [1, 2, 3, 4, 5, 6]In [83]: bOut[83]: [1, 2, 3]In [84]: id(a)Out[84]: 4477187640In [85]: id(b)Out[85]: 4476686208 可以看出对于可变对象而言 x = x + y 这种形式已经改变了x的指向,而不是"inplace"的修改。 使用dis模块进行一下验证。 In [86]: def foo(x, y): ...: x += y ...……

网友NO.120255

在Python中i += x和i = i + x什么时候不等

增强型赋值语句是经常被使用到的,因为从各种学习渠道中,我们能够得知 i += 1 的效率往往要比 i = i + 1 更高一些(这里以 += 为例,实际上增强型赋值语句不仅限于此)。所以我们会乐此不疲的在任何能够替换普通赋值语句的地方使用增量型赋值语句,以此来优化代码。那么我们是否有想过,在什么情况下 i += 1 其实并不等效于 i = i + 1 !! 例一:使用增强型赋值语句: 例二:使用普通赋值语句: 上述两个例子中,将一个列表类型对象赋值给变量 a,再将变量 a 赋值给变量 b,此时 a、b 指向了同一个内存对象 [1, 2, 3]。然后分别应用增量赋值运算符和普通赋值运算符来操作变量 b。从最后的结果来看,例一中的 a、b 在进行运算后依旧指向了同一个内存对象。例二则相反,a、b 分别指向了不同的内存对象,也就是说在例二中隐式的新建了一个内存对象。……

网友NO.646336

详解Python中表达式i += x与i = i + x是否等价

前言 最近看到一个题目,看似很简单,其实里面有很深的意义,题目是Python 表达式 i += x 与 i = i + x 等价吗?如果你的回答是yes,那么恭喜你正确了50%,为什么说只对了一半呢? 按照我们的一般理解它们俩是等价的,整数操作时两者没什么异同,但是对于列表操作,是不是也一样呢? 先看下面两段代码: 代码1 l1 = range(3) l2 = l1 l2 += [3] l1[0, 1, 2, 3] l2[0, 1, 2, 3] 代码2 l1 = range(3) l2 = l1 l2 = l2 + [3] l1[0, 1, 2] l2[0, 1, 2, 3] 代码1与代码2中的l2的值是一样的,但是l1的值却不一样,说明 i += x 与 i = i + x 是不等价的,那什么情况下等价,什么情况下不等价呢? 弄清楚这个问题之前,首选得明白两个概念:可变对象与不可变对象。 在 Python 中任何对象都有的三个通用属性:唯一标识、类型、值。 唯一标识: 用于标识对象的在内存中唯一性,它在对象创建之后就不会再……

网友NO.829260

Python中的连接符(+、+=)示例详解

前言 本文通过在一段示例代码中发现的问题,来给大家详细介绍了Python中的连接符(+、+=),下面话不多说,来看详细的介绍吧。 假设有下面一段代码: a = [1, 2, 3, 4]b = [5, 6, 7, 8, 9]c = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]for item in (a, b, c): item += [0] * (10 - len(item))print aprint bprint c 这段代码的意思是,有三个列表,需要在长度不为 10 的列表尾部填充 0,让其长度变为10。 输出如下: [1, 2, 3, 4, 0, 0, 0, 0, 0, 0][5, 6, 7, 8, 9, 0, 0, 0, 0, 0][11, 12, 13, 14, 15, 16, 17, 18, 19, 20] 这里没什么问题,一切正常。但是,现在变了需求,需要在长度不为 10 的列表的前面填充 0。 那么,我们尝试做如下的改动: a = [1, 2, 3, 4]b = [5, 6, 7, 8, 9]c = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]for item in (a, b, c): item = [0] * (10 - len(item)) + itemprint aprint bprint c 直接来看一下输出: [1, 2, 3, 4][5, 6, 7, 8, 9][11, 12, 13, 14, 15, 16……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com