序列
序列(Sequence) 是一个包含其他对象的有序集合,序列中的元素包含了一个从左到右的顺序,可以根据元素所在的位置进行存储和读取。
序列的类型
Python中内建了6种序列,分别是:列表、元组、字符串、unicode字符串、buffer对象和xrange对象。
序列作为Python的数据结构,有一些操作是通用的,如:索引、切片、加、乘以及检查某个成员是否属于序列的成员(成员资格),另外,还有一些计算长度、找到最大元素等等的内建函数。
索引
序列中的所有元素都有编号,从0开始,可以按照编号来访问序列中的元素,这个标号就是索引(indexing)。se[0]
表示序列se中的第一个元素,se[-1]
表示序列中的最后一个元素。
= 'Hello'
se print(se[0])
print(se[-1])
切片
切片(Slicing) 操作指的是访问序列中一定范围之内的元素。切片通过冒号相隔的两个索引来实现,第一个索引是需要提取部分的第1个元素的编号,而第二个索引是切片之后剩下部分的第1个元素的编号,第二个索引不包含在切片之中。例如se[0:5]
就表示从第一个元素到第5个元素。
= 'Hello Pythoner!'
se print(se[0:5])
上述代码将打印出Hello
字符串。但有时,我们需要获取序列的后面几个元素,同时,序列的大小是未知的,我们可以这样写:
= 'Hello Pythoner!'
se print(se[-9:])
se[-9:]
中空了第2个索引,表示一直到最后一个元素。上述代码将打印出‘Pythoner!’
字符串。
进行切片时,切片的开始和结束点需要指定。而另外一个参数步长(step length)通常默认为1,当有必要时,可是指定切片的步长,如每隔1个元素就取出元素:
= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers print(numbers[0:10:2])
print(numbers[1::2])
上述代码将打印出‘[1, 3, 5, 7, 9]
’和‘[2, 4, 6, 8, 10]
’,其中的步长都是2。
当然步长也可以设置为负值,这样切片会从后往前进行。
序列相加
可以通过加号+
能对两个相同类型的序列进行连接运算,如字符串:
= '你好'
hello = 'yangjh'
name print(hello + name)
上述代码将打印出‘你好yangjh’
字符串。
序列相乘
序列乘以数字,表示将原有序列重复若干次:
= '你好'
hello print(hello * 3)
上述代码将打印出‘你好你好你好’
字符串。
空列表可以使用‘[]’
来表示,但是,如果想创建有10个空元素组成的列表,就需要使用None
,None
是Python内建的一个值,表示什么都没有,因此,要创建含有10个空元素的列表,就可以这样:
print([None] * 10)
成员资格
使用in
运算符,可以检查某个元素是否存在与指定的序列中。如果元素存在于序列中,则返回True
,否则返回False
。例如print('张三' in ['张三', '李四', '王二'])
将输出True
。
长度、最小值、最大值
内建函数len()
可以返回序列的大小,如:
= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers print(len(numbers))
print(max(numbers))
print(min(numbers))
上述代码将打印出numbers
序列的长度10
和最大值以及最小值。
dir()
函数可以输出对象的内置方法。如:dir('str')
就可以打印出所有字符串对象的内置方法。