第11章

第11章

序列赋值

>>> nudge = 1
>>> wink = 2
>>> a,b = nudge,wink
>>> a,b
(1, 2)
>>> [a,b,c]=(1,2,3)
>>> a,c
(1, 3)

虽然可以在= 符号两侧混合相匹配的序列类型,右边元素的数目还是要跟左边的变量的数目相同。

>>> a,b,c=[235,'loi','wang']
>>> d = a,b,c
>>> d[:2],d[2:]
((235, 'loi'), ('wang',))
>>> ((a,b),c)=('sp','am')
>>> a,b,c
('s', 'p', 'am')
------------------
>>> red,green,blue=range(3)
>>> red,green,blue
(0, 1, 2)
l = [1,2,3,4]
while l:
    front,l = l[0],l[1:]
    print(front,l)
-------------------
1 [2, 3, 4]
2 [3, 4]
3 [4]
4 []

扩展序列解包

>>> seq=[1,2,3,4]     #对于任何序列类型都一样
>>> a,*b = seq
>>> a,b
(1, [2, 3, 4])
>>> *a,b = seq
>>> a,b
([1, 2, 3], 4)
>>> a,*b,c = seq
>>> a,b,c
(1, [2, 3], 4)

一个序列解包赋值总是返回多个匹配项的一个列表,而分片把相同类型的一个序列作为分片的对象返回。

#扩展序列解包赋值
>>> a,*b = 'spam'
>>> a,b
('s', ['p', 'a', 'm'])
>>> a,*b,c = 'spam'
>>> a,b,c
('s', ['p', 'a'], 'm')     #看这行
--------------------------
#切片赋值
>>> s = 'spam'
>>> s[0],s[1:]
('s', 'pam')
>>> s[0],s[1:3],s[3]
('s', 'pa', 'm')         #看这行

边界情况

带星号的名称可能匹配单个项

>>> seq = [1,2,3,4]
>>> a,b,c,*d = seq
>>> a,b,c,d
(1, 2, 3, [4])
>>> print(a,b,c,d)     #为什么直接返回值是元组,打印是整形
1 2 3 [4]

应用于for循环

等学for循环迭代工具看p301

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值