Python包含6中内建序列,常用的有:列表和元组。其他的内建序列类型有字符串,Unicode字符串,buffer对象和xrange对象。
所有序列类型都可以进行某些特定操作,包括:索引(indexing),分片(slicing),加(adding),乘(multiplying),成员资格(in),长度(len),找出最大最小元素的内建函数。
索引
序列中的所有元素都是有编号的,从0开始递增。这些元素可以通过编号分别访问。
#字符串 str = 'python' print(str[1]) >>> y #列表 str = ['in', 'be', 'to', 'and', 'or'] print(str[1]) >>> be
使用负数索引时,Python会从右边,也就是从最后一个元素开始计数。最后一个元素的位置编号是-1(不是-0)
分片
与使用索引来访问单个元素类似,可以使用分片操作来访问一定范围内的元素。分片通过冒号隔开的两个索引来实现
url = 'www.google.com' print(url[4:10]) >>> google
分片操作的实现需要提供两个索引作为边界,第一个索引的元素是包含在分片内的,第二个则不包含在分片内。
num = [1,2,3,4,5,6,7,8,9] print(num[3:6]) >>> [4, 5, 6]
分片的捷径
如果分片所得部分包括序列结尾的元素,那么,只需置空最后一个索引即可。
num = [1,2,3,4,5,6,7,8,9] #最后三个元素 print(num[-3:]) >>> [7, 8, 9] #前三个元素 print(num[:3]) >>>[1, 2, 3]
可以使用分片赋值来修改列表,但是不能修改字符串和元组。
num = [1,2,3,4,5,6,7,8,9] num[:3] = [0] print(num) >>> [0, 4, 5, 6, 7, 8, 9]
如果需要复制整个序列,可以将两个索引都置空
num = [1,2,3,4,5,6,7,8,9] number = num[:] print(number) >>> [1, 2, 3, 4, 5, 6, 7, 8, 9]
分片的步长
默认为1,可以通过切片的第三个参数指定
#步长为2 num = [1,2,3,4,5,6,7,8,9] print(num[0:9:2]) >>> [1, 3, 5, 7, 9] #另一种写法 num = [1,2,3,4,5,6,7,8,9] print(num[::2]) >>> [1, 3, 5, 7, 9]
步长不能为0,但是可以是负数,分片从右到左提取元素
num = [1,2,3,4,5,6,7,8,9] print(num[::-2]) >>> [9, 7, 5, 3, 1]
当使用一个负数作为不步长时,必须让开始点(开始索引)大于结束点。
序列相加
a = 'hello' b = 'world' print(a+b) >>> helloworld x = [1,2,3] y = [4,5,6] print(x+y) >>> [1, 2, 3, 4, 5, 6]
不同序列类型不能相加。
乘法
用数字x乘以一个序列会生成新的序列,而在新的序列中,原来的序列将被重复x次。
str = 'python' print(str*5) >>> pythonpythonpythonpythonpython num = [5] print(num*5) >>> [5, 5, 5, 5, 5]
成员资格
为了检查一个值是否在序列中,可以使用in运算符
str = 'hello world' print('e' in str) >>> True print('x' in str) >>> False
#列表也一样
最大最小值:max,min
str = 'hello world' print(max(str)) >>> w num = [545,8,26,781,2] print(min(num)) >>> 2