美文网首页生活不易 我用python
说说 Python 序列增量赋值的效率

说说 Python 序列增量赋值的效率

作者: deniro | 来源:发表于2020-10-02 09:57 被阅读0次

*= 在可变和不可变序列上在实现方式上是不同的。Luciano Ramalho 举了这样一个示例:

l = [1, 2, 3]
logging.info('id(l) -> %s', id(l))

l *= 2
logging.info('l -> %s', l)
logging.info('id(l) -> %s', id(l))

t = (1, 2, 3)
logging.info('id(t) -> %s', id(t))

t *= 2
logging.info('t -> %s', t)
logging.info('id(t) -> %s', id(t))

运行结果:

INFO - id(l) -> 1692299406664
INFO - l -> [1, 2, 3, 1, 2, 3]
INFO - id(l) -> 1692299406664
INFO - id(t) -> 1692297005000
INFO - t -> (1, 2, 3, 1, 2, 3)
INFO - id(t) -> 1692297091304

id() 函数返回对象的唯一标识符,标识符是一个整数。

可以看到在可变序列上(示例中是数组)增量赋值,仍然在同一个对象上;但如果对不可变序列上(示例中是元组)增量赋值,这个对象已经是一个新对象。


对不可变序列进行增量赋值操作效率会很低,因为每次都会创建一个新对象,python 会把原来对象中的元素先复制到新的对象中,然后再追加新的元素。

相关文章

  • 说说 Python 序列增量赋值的效率

    *= 在可变和不可变序列上在实现方式上是不同的。Luciano Ramalho 举了这样一个示例: 运行结果: i...

  • Python中序列的增量赋值

    增量赋值运算符有 +=和 *=。+=背后的特殊方法是 __iadd__,如果一个类没有实现 __iadd__方法,...

  • Python常见问题汇总

    变量赋值 <1>赋值操作符 =Python语言中,等号(=)是主要的赋值操作符。<2>增量赋值x += 1 (不支...

  • Python学习 <一> Python基础

    变量赋值 <1>赋值操作符 =Python语言中,等号(=)是主要的赋值操作符。<2>增量赋值x += 1 (不支...

  • Python3序列赋值、序列解包详解(上)

    ###概述赋值是各个编程语言通用的概念,而在Python有多种赋值方法以供选择,比如元组、列表、序列赋值运算等,甚...

  • python 序列增量赋值谜一般的题目

    说到python的增量赋值,大家里面就想到 +=, *= 之类的 +=背后的特殊方法是 iadd 意思是:就地加法...

  • 控制语句执行流程

    Python中流程控制语句 选择结构if 循环结构for for与range() 用while循环 增量赋值运算符...

  • ES6

    ES6: ES6 新语法 1.变量 解构赋值 (解构赋值对应的python里的序列解包) 解构赋值方式一: 解构赋...

  • PTYHON-COOKBOOK学习记录-1

    解压序列赋值给多个变量:在python中有个很好用的特性就是解压赋值,具体解释请看下面的代码(供赋值粘贴看): p...

  • day5-运算符和if判断

    一、赋值运算符 1、赋值运算 如: age = 18 (1) 增量赋值 age += 1 <<<>...

网友评论

    本文标题:说说 Python 序列增量赋值的效率

    本文链接:https://www.haomeiwen.com/subject/ggqnektx.html