在Python中,最基本的数据结构是序列(Sequence)。Python包含6种内建序列:
Python中所有序列都可以进行一些特定操作,包括:
序列是 Python 中最基本的数据结构。序列中的每个元素都分配一个数字,代表它在序列中的位置(索引),第一个索引是 0,第二个索引是 1,以此类推。
序列中所有元素都是有编号的,从 0 开始递增。可以通过编号分别对序列的元素进行访问。
>>> greeting='Hello'
>>> greeting[0]
'H'
Python 的序列也可以从右开始索引,最右边的元素索引值为-1,从右向左递减。
>>> greeting='Hello'
>>> greeting[-1]
'o'
索引用来对单个元素进行访问,使用分片可以对一定范围内的元素进行访问,分片通过冒号相隔的两个索引实现。
>>> numbers=[1,2,3,4,5,6,7,8,9,10]
>>> numbers[1:3]
[2, 3]
>>> numbers[-3:-1]
[8, 9]
分片操作的实现需要提供两个索引作为边界,第一个索引的元素包含在分片内,第二个索引的元素不包含在分片内。
只要在分片中最左边的索引比它右边的索引晚出现在序列中,结果就是一个空序列。
>>> numbers[-3:0]
[]
如果需要取得的分片包括序列结尾的元素,只需将第二个索引设置为空即可。
>>> numbers[-3:]
[8, 9, 10]
>>> numbers[0:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[:0]
[]
>>> numbers[:3]
[1, 2, 3]
>>> numbers[:] #取得整个数组
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
分片操作就是按照这个步长逐个遍历序列的元素,遍历后返回开始点和结束点之间的所有元素,在普通分片中,步长是1。第三个数字就是显式设置步长。
>>> numbers[0:10:1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[0:10:2]
[1, 3, 5, 7, 9]
步长也可以为负数,但第二个索引为空才能取到序列的第一个元素。
>>> numbers[::-2]
[10, 8, 6, 4, 2]
>>> numbers[5::-2]
[6, 4, 2]
正数步长必须让开始点小于结束点,而负数步长必须让开始点大于结束点。
类型相同的序列可以通过加号进行序列连接操作,不同类型的序列不能通过加号进行序列连接操作。
>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
>>> 'hello' + ' ' + 'world'
'hello world'
用一个数字n乘以一个序列会生成新的序列。在新的序列中,原来的序列被重复n次。
>>> 'hello'*5
'hellohellohellohellohello'
>>> [1]*3
[1, 1, 1]
>>> sq=[None]*5 #None表示空值
>>> sq
[None, None, None, None, None]
使用 in 运算符检查一个值是否在序列中。
>>> greeting='hello,world'
>>> 'w' in greeting
True
>>> users=['Tom','John','Mike']
>>> 'Tom' in users
True
>>> 'tom' in users
False
>>> numbers=[3,5,2,7]
>>> len(numbers)
4
>>> max(numbers)
7
>>> min(numbers)
2
>>> max(3,5,2,7) #参数可以不为序列
7
>>> min(3,5,2,7)
2
