Python入门06——元组的拆包与装包

元组拆包可以应用到任何可迭代的对象上,但是要求可迭代对象中的元素数量必须要跟接收这些元素的元组的空档一致,以下是元组拆包可能出现的情况。

1、最简单的拆包形式就是平行复制,也就是说把一个可迭代对象里的元素一并赋值到由对应的变量组成的元组当中。

>>> t1 = (1,2,3)
>>> a,b,c = t1
>>> print(a,b,c)
1 2 3

2、用 ’ * ‘ 运算符把一个可迭代对象拆开作为参数。

>>> divmod(20,6)
(3, 2)
>>> t = (20,6)
>>> divmod(*t)
(3, 2)
>>> a,b = divmod(*t)
>>> print(a,b)
3 2

3、用 ‘ * ’ 作为前缀来处理部分元素,只能用在一个变量名的前面,但是这个变量可以出现在赋值表达式的任意位置。

>>> t = (1,2,3,4,5,6)
>>> a,b,*c = t
>>> print(a,b,c)
1 2 [3, 4, 5, 6]
>>> t1 = (1,)
>>> a,*b = t1
>>> a,b
(1, [])
>>> a,*b,c = t
>>> a,b,c
(1, [2, 3, 4, 5], 6)
>>> *_,a,b = t
>>> print(_,a,b)
[1, 2, 3, 4] 5 6

在简单的 t = (1,2,3,4,5,6),a,b,*c = t,赋值操作中,底层代码中,其实实现了拆包和装包两个过程,赋值即为装包的过程,打印为拆包的过程:

4、嵌套元组拆包

接收表达式的元组也可以是嵌套结构的,只要接收元组的嵌套结构符合表达式本身的嵌套结构,编译器就可以做出正确的对应。下面是一个嵌套元组拆包的例子。

>>> info = [('张三',18,'中国',(90,80,70)),
	('李四',16,'中国',(67,57,87)),
	('王五',19,'中国',(96,97,98))]
>>> for name,age,country,(math,language,english) in info:
	print(name,age,country,math)

	
张三 18 中国 90
李四 16 中国 67
王五 19 中国 96
>>> sorce = (math,language,english)
>>> for name,age,country,sorce in info:
	print(name,age,country,sorce)

	
张三 18 中国 (90, 80, 70)
李四 16 中国 (67, 57, 87)
王五 19 中国 (96, 97, 98)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值