序列
Python中的序列类型,其成员有序排列,可以通过下标偏移量访问到它的一个或多个成员。因为这些类型其实都是由一些成员共同组成的一个序列整体,所以统称为序列。
序列类型包含:字符串(普通字符串和unicode字符串)、列表和元组。
1 操作符
1.1 标准操作符
对象值比较:比较操作是针对对象的值进行的。
< > <= >= == != <>
对象身份比较:
obj1 is obj2 obj1 和obj2是同一个对象,等同于 id(obj1)==id(obj2)
obj1 is not obj2 obj1 和obj2不是同一个对象
bool类型:
not and or 优先级依次降低
1.2 序列类型操作符
成员关系操作符(int、not in):用来判断一个元素是否属于一个序列。
对象 [not] in 序列
连接操作符(+):把一个序列与另个一个相同的序列连接起来。
seq1 + seq2
对字符串来说,该操作不如把所有子字符串放到一个列表或者可迭代对象中,然后调用join. 对列表来说,推荐用extend()来合并多个列表对象。
重复操作符(*):把一个序列拷贝多份
seq * copies
切边操作符([],[:],[::])
seq[index]
正索引 0 <= index <= len(seq)-1
负索引 -len(seq)<= index <= -1
正负索引的区别在于,正索引以序列的开始为起点,负索引以序列的结束为起点。
seq[start_index:end_index]
可以得到从起始索引到结束索引(不包括结束索引)之间的一片元素。起始索引和终止索引都是可选的。并且,开始索引和结束索引值可以超过字符串的长度。
seq[start_index:end_index:step]
第三个索引被用作步长参数。step为负数,可以认为是翻转操作。
None
使用来迭代显示整个字符串:
>>> t
'abcde'
>>> for i in [None].extend(range(-1,-len(t),-1)):
... print t[:i]
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not iterable
>>> for i in [None] + range(-1,-len(t),-1):print t[:i]
...
abcde
abcd
abc
ab
a
>>>
2 内建函数(BIF)
2.1 类型转换
内建函数list(),str(),tuple(),被用做各类序列之间转换。
list(iter) 将可迭代对象转换为列表
str(obj) 把obj对象转化成字符串
unicode(obj) 将对象转化为Unicode字符串
basestring() string和unicode的父类,不能实例化
tuple(obj) 把一个可迭代对象转换成一个元组对象
2.2 操作
enumerate(iter) 接受一个可迭代对象作为参数,返回一个enumerate对象,
该对象由iter每个元素的index和item值组成的元组
len(seq) 返回seq的长度
max(iter,key=None) 返回iter中的最大值
min(iter,key=None) 返回iter中的最小值
reversed(seq) 返回逆序的迭代器
sorted(iter, 接受一个可迭代对象作为参数,
func=None, 返回有序列表
key=None,
reverse=False)
sum(seq,init) 返回seq和可选参数init的总和
zip([it0,..,itN]) 返回一个列表,第一个元素是it01,ite1等的依次第一个,第二个元素