Python赋值魔法技巧

实验环境:

[[email protected] ~]# python -V
Python 2.7.5

  

1.序列解包

多个赋值操作可以同时进行

>>> x,y,z = 1,2,3
>>> x
1
>>> print y,z
2 3

交换两个或者多个变量也是可以的

>>> x,y = y,x
>>> print x,y,z
2 1 3

这里所做的事叫做序列解包或者递归解包--将多个值的序列解开,然后放到变量的序列中。更形象的表示:

>>> values = 1,2,3
>>> values
(1, 2, 3)
>>> x,y,z = values
>>> print x,y,z
1 2 3

当函数或者方法返回元组(或者其他序列或者可迭代对象)时,这个特性显得更为有用。假设需要获取(和删除)字典中任意的键-值对,可以使用popitem方法,这个方法将键-值对作为元组返回。那么这个元组就可以直接赋值到两个变量中。

>>> addresslist = {‘Wang‘:‘123456‘,‘Ni‘:‘23456‘}
>>> key,value = addresslist.popitem()
>>> key
‘Ni‘
>>> value
‘23456‘

序列解包允许函数返回一个以上的值并且打包成元组,然后通过一个赋值语句很容易进行访问。所以解包的序列中的元素数量必须和放置在赋值符号=左边的变量数量完全一致。否则Python在赋值的时候就会引发异常。

>>> x,y,z = 1,2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: need more than 2 values to unpack
>>> x,y,z = 1,2,3,4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack

2.链式赋值

链式赋值是将同一个赋值给多个变量的捷径。有点像上面的并行赋值,不过只处理一个值

>>> x=y=[1,2,3]
>>> print x,y
[1, 2, 3] [1, 2, 3]

等价于

y=[1,2,3]

x=y

3.增量赋值

将赋值表达式中x=x+1的表达式运算符(本例中是+)放置在赋值运算符=的左边,写成x+=1。这种写法叫做增量赋值,对于*、/、%等标准运算符都适用。

>>> x=2
>>> x+=1
>>> x
3
>>> x*=2
>>> x
6

对于其他数据类型也同样适应。只要二元运算符本身适用这些数据类型即可。

>>> fnord=‘foo‘
>>> fnord+=‘bar‘
>>> fnord
‘foobar‘
>>> fnord*=2
>>> fnord
‘foobarfoobar‘

增量赋值可以让代码变得更加紧凑和简练。

参考:

Python基础教程(第二版.修订版) 

 

  

时间: 2024-08-09 02:01:02

Python赋值魔法技巧的相关文章

&lt;转&gt; 30 个有关 Python 的小技巧

目录[+] 1.1 拆箱 1.2 拆箱变量交换 1.3 扩展拆箱(只兼容python3) 1.4 负数索引 1.5 切割列表 1.6 负数索引切割列表 1.7指定步长切割列表 1.8 负数步长切割列表 1.9 列表切割赋值 1.10 命名列表切割方式 1.11 列表以及迭代器的压缩和解压缩 1.12 列表相邻元素压缩器 1.13 在列表中用压缩器和迭代器滑动取值窗口 1.14 用压缩器反转字典 1.15 列表展开 1.16 生成器表达式 1.17 字典推导 1.18 用字典推导反转字典 1.19

gj3 Python数据模型(魔法函数)

3.1 什么是魔法函数 类里面,实现某些特性的内置函数,类似 def __xx__(): 的形式. 不要自己定义XX,并不是和某个类挂钩的 class Company(object): def __init__(self, employee_list): self.employee = employee_list # 可迭代 def __getitem__(self, item): return self.employee[item] # 长度,实现了len函数 def __len__(self

python的魔法函数

hello, 大家好, 今天给大家分享一点python的魔法函数,即Python中自带双下划线的函数,虽然在大规模的软件开发中大家用的不多,当然除非你想被打(可以秀(装逼)一下), 虽然使用的不多, 但是要是能数量的运用它们的话, 没有点功力基础也是相当困难的, 正所谓没有扎实的基本功,即便南拳北腿,降龙十八掌,九阴白骨爪,乾坤大挪移全部了然于心,照样是花拳绣腿,百无一用 所以还是老老实实的把自己的基本功练好,面向对象玩的炉火纯青,其他的不过是稍加训练,跟卖艺的学几招也能称霸一片天.哈哈 牛吹的

Python 常用魔法方法(下)

Python 常用魔法方法(下) 回顾 魔法方法是 Python 内置方法, 不需要我们手动调用, 它存在的目的是给 解释器 调用的. 比如我们在写 "1 + 1 " 的时候, 这个 "+ " 就会自动调用内置的魔法方法 "__ add__" . 几乎每个魔法方法, 都有一个对应的内置函数或运算符. 当我们使用这些方法去操作数据时, 解释器会自动调用这些对应的魔法方法. 也可以理解为, 重写内置函数, 如果改变的话. 具体的魔法方法等. 可以去看

Python高效编程技巧

下面我挑选出的这几个技巧常常会被人们忽略,但它们在日常编程中能真正的给我们带来不少帮助. 1. 字典推导(Dictionary comprehensions)和集合推导(Set comprehensions) 大多数的Python程序员都知道且使用过列表推导(list comprehensions).如果你对list comprehensions概念不是很熟悉——一个list comprehension就是一个更简短.简洁的创建一个list的方法. >>> some_list = [1,

小猿圈之Python开发的技巧一?

python现在成为主流的开发语言,越来越多的朋友开始学习python,其实学习python有很多的学习技巧,今天小猿圈老师带你了解一下:python学习技巧,让你们可以简单快速掌握python,下面咱们开始我们的python之旅吧! 显示有限的接口到外部: 当发布python第三方package时,并不希望代码中所有的函数或者class可以被外部import,在__init__.py中添加__all__属性,该list中填写可以import的类或者函数名,可以起到限制的import的作用,防止

python 统计使用技巧

python 统计使用技巧 # 1.不输入回车获取值 fd = sys.stdin.fileno() old_settings = termios.tcgetattr(fd) tty.setraw(sys.stdin.fileno()) ch = sys.stdin.read(1) # 值个数 termios.tcsetattr(fd,termios.TCSADRAIN,old_settings) # 2.进度条 int = 0 percent = ("%s%%"%int) sys.s

Python编码小技巧分享【新手必学】

本次分享了python编程小技巧总结如下,希望对大家有帮助,非常实用哦注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑.为此小编建了个Python全栈免费答疑交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,不懂的问题有老司机解决里面还有最新Python教程项目可拿,,一起相互监督共同进步! 交换值 从列表中的所有元素创建单个字符串 查询列表中出现频率最多的元素 检查两个单词是否是字谜 反转字符串 反转列表 转置 2 维数组 链式比较 链式函数调用 列表复制 字典值获

30个有关Python的小技巧

从我开始学习python的时候,我就开始自己总结一个python小技巧的集合.后来当我什么时候在Stack Overflow或者在某个开源软件里看到一段很酷代码的时候,我就很惊讶:原来还能这么做!,当时我会努力的自己尝试一下这段代码,直到我懂了它的整体思路以后,我就把这段代码加到我的集合里.这篇博客其实就是这个集合整理后一部分的公开亮相.如果你已经是个python大牛,那么基本上你应该知道这里面的大多数用法了,但我想你应该也能发现一些你不知道的新技巧.而如果你之前是一个c,c++,java的程序