2007年2月25日星期日

Python笔记(4)——List

把一堆东西东西放在一起就构成了一个List,当然这个“一堆”不一定指一个以上,也可以仅仅有一个,甚至是什么都没有。

>>>a=['spam','eggs',100,1234]
>>>a
['spam','eggs',100,1234]
>>>a[0]
'spam'
学过其他语言的可能会觉得这有点像数组,下标从0开始;但又有所区别。看上面的例子得知,一个List中的元素类型不一定是同一种。要重点指出的是,Python淡化了类型的概念。
有意思的是,List的元素下标可以从右边数起:对上个例子而言,最右边的是a[-1],靠左一点的是a[-2],等等。这有什么用呢?比如让你显示出一个List中第二个到倒数第二个中的所有元素,你当然可以先找到这个List的长度,不过这不是Python的做法,那是C++/Java一类的。更地道的是用:
>>>a[1:-1]
['eggs',100]
再举两个List运算的例子:
>>>a[:2]+['bacon',2*2]
['spam','eggs','bacon',4]
>>>3*a[:3]+['Boo!']
['spam',eggs',100,'spam','eggs',100,'spam','eggs',100,'Boo!']
List中的元素是可变的,这一点了字符串不太一样:
>>>a
['spam','eggs',100,1234]
>>>a[2]=a[2]+23
>>>a
['spam','eggs',123,1234]
也可以改变List中的一个Slice,这样可以相当直观的进行删除插入操作:
>>>a[0:2]=[1,12]
>>>a
[1,12,123,1234]
>>>a[0:2]=[]
>>>a
[123,1234]
>>>a[1:1]=['bletch','xyzzy']
>>>a
[123,'bletch','xyzzy',1234]
>>>a[:0]=a
>>>a
[123,'bletch','xyzzy',1234,123,'bletch','xyzzy',1234]
>>>a[:]=[]
List中元素的个数可以用len()来取得:
>>>len(a)
8
刚才说List的元素类型不限,可以推想,一个List也可以作为另一个List的元素:
>>>q=[2,3]
>>>p=[1,p,4]
>>>len(p)
3
>>>p[1]
[2,3]
>>>p[a][0]
2
>>>p[1].append('xtra')
>>>p
[1,[2,3,'xtra'],4]
>>>q
[2,3,'xtra']
注意这里:q和p[1]引用同一内存区域,对其中一个的改变都会影响到另一个

没有评论: