python学习记录(第七天)
时间:2010-11-12 来源:simonchia
序列赋值
1.简单的例子
>>> cisco=1
>>> juniper=2
>>> [a,b]=cisco,juniper
>>> [a,b]
[1, 2]
>>> a,b
(1, 2)
2.交换值
>>> a=1
>>> b=2
>>> a,b=b,a
>>> a,b
(2, 1)
高级序列赋值语句模式
虽然可以在“=”符号两侧混合匹配序列类型,但是右边元素的数目还是要跟左边变量的数目相同,不然会产生错误,如下所示:
>>> a='SPAM'
>>> b,c,d=a
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ValueError: too many values to unpack
>>> b,c,d,f=a
>>> b
'S'
>>> c
'P'
>>> d
'A'
>>> f
'M'
如果想要通用的话,就必须分片:
>>> b,c,d=a[0],a[1],a[2]
>>> b
'S'
>>> c
'P'
>>> d
'A'
赋值嵌套序列:
>>> ((a,b),c)=('sp','am')
>>> a,b,c
('s', 'p', 'am')
序列分解赋值语句:
>>> a,b,c=range(3)
>>> a,b,c
(0, 1, 2)
其中range()这个内置函数是用来产生连续整数列表的。
在循环中把序列分割为开头和剩余两部分:
>>> l=[1,2,3,4]
>>> while l:
... f,l=l[0],l[1:]
... print f,l
...
1 [2, 3, 4]
2 [3, 4]
3 [4]
4 []
多目标赋值语句:
>>> a=b=c=0
>>> a,b,c
(0, 0, 0)
共享引用:
>>> a=b=[]
>>> b.append(42)
>>> a,b
([42], [42])
如下配置就不会出现共享引用:
>>> a=[]
>>> b=[]
>>> b.append(42)
>>> a,b
([], [42])
增强赋值语句:
>>> x='spam'
>>> x+='SPAM'
>>> x
'spamSPAM'
共享引用:
>>> l=[1,2]
>>> m=l
>>> l+=[3,4]
>>> m,l
([1, 2, 3, 4], [1, 2, 3, 4])
如下配置就不会出现共享引用:
>>> l=[1,2]
>>> m=l
>>> l=l+[3,4]
>>> m,l
([1, 2], [1, 2, 3, 4])
相关阅读 更多 +