Chinaunix首页 | 论坛 | 博客
  • 博客访问: 90025
  • 博文数量: 30
  • 博客积分: 1501
  • 博客等级: 上尉
  • 技术积分: 300
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-01 09:23
文章分类

全部博文(30)

文章存档

2011年(6)

2010年(24)

分类: Python/Ruby

2010-11-12 11:28:52

序列赋值
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 "", 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])

阅读(4606) | 评论(1) | 转发(0) |
0

上一篇:2010.11.11

下一篇:python学习记录(第八天)

给主人留下些什么吧!~~

chinaunix网友2010-11-12 17:19:50

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com