python list tuple 打包 解包_【ZZ】python的打包和解包(tuple)

Python代码

a, b, c = b, c, a

讨论

许多程序语言让你使用临时中间变量去交换变量的值。

Python代码

temp = a

a = b

b = c

c = temp

但是python让你使用tuple的打包和解包来直接赋值

Python代码

a, b, c = b, c, a

在一个赋值中,python要求等号右边是一个表达式。 这里我们所写的b, c, a的确是表达式。要明确的是,它是一个元组, 有三个元素的不可变的序列。元组经常用圆括号括起来, 象(b, c, a)。 但是在这里除了逗号是有一些其他的意思以外(在一个函数调用中),圆括号不是必须的。

通过打包元组的每一项,用逗号来建立一个元组.在赋值语句的等号的左边,你可以正常的使用单个的对象。 这个对象能够是简单的一个标示符号(也就是众所周知的变量), 一个索引(例如alist[i] 和 adict['freep']), 一个属性的引用(如anobject.someattribute)等等。然而,python也让你在赋值语句的左边,使用几个用逗号分开的对象(变量,索引等等)。 那样的一个多赋值也被称为解包赋值。 当有两个或者更多的逗号分隔开的对象在一个赋值语句的左边, 右边的值必须是一个序列,而且它的数目要和左边逗号分隔的对象一样多。序列的每一项都被从左到右依次赋给相对应的目标值。

在这个配方中(译注:书的名字叫python食谱,所以每一节都称为一个配方:)),

我们有三个逗号分隔的目标对象在左边,所以我们需要右边有三个元素的序列,他们是有三个元素的被打包的元组。第一个目标(变量)得到第一个元素的值(它使用变量b的值), 第二个目标(b)得到第二个元素的值(它使用变量c的值), 并且第三个即最后一个目标(c)得到第三即最后一个元素(使用变量a的值)。 实际结果是一个在变量之间交换的值(你可以想想这个例子细节等价于一个旋转)

元组使用逗号打包,序列通过放置几个逗号分隔的目标到语句的左边来解包。他们都是有用的,简单的,普遍的机制。通过结合他们,你能简单地,优美地,自然地表达任何一组变量之间的值交换

#########################################################################################

python的打包操作,是指把现有的数据放到一个tuple中,例如:

>>> t = 1

>>> t

1

>>> t = 1,

>>> t

(1,)

sqlite3里面的execute函数会过滤特殊符号,比如@,类似于:

select name,mail from mTable where mail = 'aa@bb.com'

这样的语句里面的@就会被过滤掉,用tuple打包下就不会了:

sqlString = 'aa@bb.com',

现在sqlString是一个tuple了,直接把它传进去,就ok.

关于解包,还有一个有趣的应用:

>>> a = 1

>>> b = 2

>>> a,b = b,a

>>> a

2

>>> b

1

可以利用一个打包,解包的过程来实现"不用临时变量来交换值"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值