38_序列解包


38.序列解包

序列解包可以用于元组、列表、字典 序列解包可以让我们方便的 对多个变量赋值。

普通解包

>>> x,y,z=(20,30,10) 
>>> x 
20 
>>> y 
30 
>>> z 
10
>>> (a,b,c)=(9,8,10) 
>>> a
9
>>> [a,b,c]=[10,20,30]
>>> a 
10 
>>> b 
20

也可以这样解包

cookie = 'BIDUPSID=6AE26F43446A5C1F4F5F5C4E412DC9FF;PSTM=1581078121;  BD_UPN=12314753;delPer=3; BD_CK_SAM=1;sugstore=1;ZD_ENTRY=baidu;PSINO=5;'
print('-' * 30)
c_li = cookie.replace(" ", "").split(';')
[(k1, v1), (k2, v2), (k3, v3), (k4, v4), (k5, v5), (k6, v6), (k7, v7),
 (k8, v8)] = [tuple([x for x in i.split("=")]) for i in c_li][:-1]
# 也就是以下 效果 类似。
In [35]: [[a,b],[c,d]]=[[1,2],[3,4]]

In [36]: a
Out[36]: 1

In [37]: b
Out[37]: 2

In [38]: c
Out[38]: 3

In [39]: d
Out[39]: 4
 

字典解包

序列解包用于字典时,默认是对“键”进行操作; 如果需要键值对操作,则需要使用items()如果需要对“值”进行操作,则需要使用 values()

>>> s = {'name':'onepis','age':18,'job':'teacher'} 
>>> name,age,job=s #默认对键进行操作 
>>> name
'name'
>>> name,age,job=s.items() #对键值对进行操作
>>> name
('name', 'onepis')
>>> name,age,job=s.values() #对值进行操作 
>>> name 
'onepis'


其他解包

In [45]: a,b,c=map(str,range(3))
# 另外 序列解包 也可以直接用于生成器。 和  for 循环 
In [46]: a
Out[46]: '0'

In [47]: b
Out[47]: '1'

In [48]: c
Out[48]: '2'
# 另外 序列解包 也可以直接用于生成器。 和  for 循环 
# enumerate 返回的 是 一个 元组 里面 包含 一个 索引 。 一个 元素
# 解包 到 i 和 v 上
In [53]: *((i,v) for i,v in enumerate(range(3))),
Out[53]: ((0, 0), (1, 1), (2, 2))


In [55]: a=[3,4,5] # 这样 换个变量  来测试 。 更直观一点
In [56]: *(i for i in enumerate(a)), # 后面 加一个 逗号。 利用 元组的特性来 解包。
# 列表也可以这样解包。 但是 返回的 依然是元组。
Out[56]: ((0, 3), (1, 4), (2, 5))

# 最简单的测试是 以下
In [58]: *range(3),
Out[58]: (0, 1, 2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值